Crear PDF’s con PHP y LATEX

En el código siguiente supongo que tiene un archivo plantilla.tex el cual ya probaron y funciona al compilarlo con el comando pdflatex y saben como manipular archivos te texto con PHP para poder leer plantilla.tex y escribir un nuevo archivo en el servidor. Así que aquí va el código.

// ruta a el archivo plantilla.tex
$ruta = "/ruta/completa/en/el/servidor/";
 
// cambias de directorio 
chdir($ruta);
 
// $id es una variable que viene de algún otro lugar y sirve para dar nombre al nuevo archivo PDF
$tex = $id.".tex"; // archivo LaTeX que compilaremos
$log = $id.".log"; // LaTeX devuelve este archivo con mensajes de "log"
$aux = $id.".aux"; // LaTeX usa este archivo para sus referencias cruzadas
$pdf = $id.".pdf"; // archivo final
 
// plantilla es el archivo LaTeX original
$plantilla = "plantilla.tex";
// leo el contenido de $plantilla
$texto = file_get_contents($plantilla);
// ahora proceso plantilla con unos arreglos $buscar y $remplazara definidos 
// en algún lugar anterior a esto.
$texto = str_replace($buscar, $remplazar, $texto);
// escribo en disco el archivo LaTeX
file_put_contents($tex,$texto);
 
// Compilo el archivo LaTeX para que devuelva un PDF y no se detenga
// en los errores
exec("pdflatex -interaction=nonstopmode $tex",$final);
// cuando termina de compilar, borro todos los archivos
// y muevo el archivo PDF a algún lugar para que lo descarguen
unlink($tex);
unlink($log);
unlink($aux);
rename($pdf, "/home/usuario/public_html/downloads/".$pdf );

¡Facil! ¿no?

Nota: hago todo el proceso del archivo LATEX en una $ruta a la que no se puede llegar desde internte, incluso recomiendo que este código tampoco sea visible desde internet, pues usa la función exec() y si no somos cuidadosos de como obtenemos la variable $id podríamos poner en algún riesgo el servidor sobretodo por que ruta necesita tener permisos de escritura por el servidor mismo.