\usepackage{ruby}

API Ruby de LaTeX vers PDF

Compilez du LaTeX en PDF depuis Ruby avec l'API REST FormaTeX. Net::HTTP standard : aucun gem requis, aucune installation de TeX Live nécessaire.

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

\section{Pourquoi Ruby}

Pourquoi Ruby + FormaTeX

Aucun gem requis

L'API FormaTeX est un simple point de terminaison HTTPS. Utilisez la bibliothèque standard de Ruby : pas de httparty, pas de faraday, rien à ajouter à votre Gemfile.

Rails-ready

Ajoutez une seule action de contrôleur à votre application Rails pour envoyer les PDF directement au navigateur, sans tâche en arrière-plan pour les petits documents.

Aucun binaire à embarquer

Oubliez l'ajout de TeX Live à votre buildpack Heroku ou à votre image Docker. FormaTeX gère entièrement l'infrastructure de compilation.

\section{Démarrage rapide}

Démarrage rapide

L'exemple ci-dessous compile un document LaTeX minimal et écrit le PDF obtenu sur disque avec le Net::HTTP intégré de Ruby. Remplacez FORMATEX_API_KEY par une clé de votre tableau de bord .

compile.rb
require 'net/http'
require 'json'
require 'uri'

API_KEY = ENV.fetch('FORMATEX_API_KEY')
API_URL = URI.parse('https://api.formatex.io/api/v1/compile')

def compile_latex(source, engine: 'pdflatex')
  http          = Net::HTTP.new(API_URL.host, API_URL.port)
  http.use_ssl  = true

  request                  = Net::HTTP::Post.new(API_URL.path)
  request['X-API-Key']     = API_KEY
  request['Content-Type']  = 'application/json'
  request.body             = { latex: source, engine: engine }.to_json

  response = http.request(request)

  raise "API error #{response.code}: #{response.body}" unless response.code == '200'

  response.body
end

latex = <<~'LATEX'
  \documentclass{article}
  \usepackage{amsmath}
  \begin{document}
  Hello from Ruby! $E = mc^2$
  \end{document}
LATEX

pdf = compile_latex(latex)
File.binwrite('output.pdf', pdf)
puts 'PDF saved to output.pdf'

\section{Intégration Rails}

Contrôleur Rails

Ajoutez un DocumentsController à votre application Rails. L'action compile accepte un corps JSON avec les champs source et engine (facultatif), puis renvoie le PDF compilé en flux avec send_data.

app/controllers/documents_controller.rb
# app/controllers/documents_controller.rb
require 'net/http'
require 'json'
require 'uri'

class DocumentsController < ApplicationController
  FORMATEX_URL = URI.parse('https://api.formatex.io/api/v1/compile').freeze

  # POST /documents/compile
  def compile
    source = params.require(:source)
    engine = params.fetch(:engine, 'pdflatex')

    pdf_bytes = call_formatex(source, engine)

    send_data pdf_bytes,
              type:        'application/pdf',
              disposition: 'inline',
              filename:    'document.pdf'
  rescue => e
    render json: { error: e.message }, status: :unprocessable_entity
  end

  private

  def call_formatex(source, engine)
    http           = Net::HTTP.new(FORMATEX_URL.host, FORMATEX_URL.port)
    http.use_ssl   = true
    http.open_timeout = 5
    http.read_timeout = 60

    req                  = Net::HTTP::Post.new(FORMATEX_URL.path)
    req['X-API-Key']     = ENV.fetch('FORMATEX_API_KEY')
    req['Content-Type']  = 'application/json'
    req.body             = { latex: source, engine: engine }.to_json

    res = http.request(req)
    raise "FormaTeX error #{res.code}: #{res.body}" unless res.code == '200'

    res.body
  end
end

\section{Authentication}

Configuration de la variable d'environnement

Stockez votre clé API dans l'environnement et ne la versionnez jamais. Utilisez ENV.fetch pour que votre application lève une erreur au démarrage si la clé est absente :

API_KEY = ENV.fetch( 'FORMATEX_API_KEY' )

Shell / .env

export FORMATEX_API_KEY=fmtx_…

Identifiants Rails

rails credentials:edit

Heroku

heroku config:set FORMATEX_API_KEY=fmtx_…

\section{Engines}

Choix du moteur

MoteurIdéal pour
pdflatexPar défaut. Rapide, largement compatible, adapté à la plupart des documents
xelatexTexte Unicode, polices système personnalisées, écritures arabe/CJK
lualatexTypographie avancée, scripts en Lua, documents volumineux
latexmkExécute automatiquement le bon nombre de passes pour les références croisées

\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).

\section{Gestion des erreurs}

Gestion des erreurs

Vérifiez response.code avant de lire le corps. L'API renvoie des codes de statut HTTP standard :

  • → 200 : octets bruts du PDF. À lire avec response.body .
  • → 422 : erreur de compilation LaTeX. Le corps JSON contient un champ error avec un extrait du journal TeX.
  • → 401 : clé API invalide ou absente.

\end{ruby}

Commencez à compiler du LaTeX depuis Ruby

Obtenez votre clé API et générez des PDF depuis Ruby en quelques minutes, sans TeX Live.