Látex a PDF | Aspose.TeX para Java

Cómo convertir LaTeX a PDF

Echemos un vistazo más de cerca al código Java que proporciona la forma más sencilla de convertir LaTeX a formato PDF.

1// Create conversion options for Object LaTeX format upon Object TeX engine extension.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
3// Specify a file system working directory for the output.
4options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
5// Initialize the options for saving in PDF format.
6options.setSaveOptions(new PdfSaveOptions());
7// Run LaTeX to PDF conversion.
8new TeXJob(Utils.getInputDirectory() +  "hello-world.ltx", new PdfDevice(), options).run();

Entonces, lo primero que debemos hacer (a veces no lo primero, como descubriremos más adelante) es crear una instancia de la clase TeXOptions. El único método estático que hace esto es consoleAppOptions(), así que no nos molestemos con el significado de su nombre. El método toma una instancia de la clase TeXConfig, que es exactamente adecuada para convertir un archivo LaTeX. Esta configuración indica al motor Object TeX que cargue el formato Object LaTeX y que esté listo para aceptar el archivo LaTeX. El formato de objeto LaTeX es solo el formato LaTeX, excepto que utiliza primitivas específicas de Object TeX para configurar las métricas de la página.

La primera de las opciones requeridas es OutputWorkingDirectory que define el espacio o área donde se escribirá la salida TeX. Aquí están los detalles sobre el concepto de directorio de salida en Aspose.TeX para Java. En este ejemplo, utilizamos la clase OutputFileSystemDirectory, que nos permite escribir la salida en el directorio o carpeta especificado.

La segunda opción es una instancia de clase SaveOptions que controlará la transformación del modelo de objeto al formato de destino. Dado que estamos convirtiendo LaTeX a PDF, es la instancia de clase PdfSaveOptions.

Luego necesitamos crear una instancia de la clase TeXJob. Al querer convertir un archivo LaTeX almacenado en el sistema de archivos, utilizamos esta versión del constructor. Deberíamos especificar la ruta completa al archivo. De lo contrario, el motor lo buscará en el directorio actual (que está definido aquí) y lo más probable es que no lo encuentre. No obstante, podremos omitir la extensión si nuestro archivo tiene la .tex. El motor lo agregará automáticamente. El segundo argumento del constructor es una instancia de clase Dispositivo. Dado que estamos convirtiendo LaTeX a PDF, es una instancia de clase PdfDevice. Como último argumento, pasamos las opciones de conversión preparadas recientemente.

Todo lo que tenemos que hacer ahora es ejecutar el trabajo.

Independientemente de si la ejecución fue exitosa o no, el primer resultado que veremos será la salida del terminal. En caso de éxito, se verá así:

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.pdf (1 page).
13Transcript written on hello-world.log.

Encontraremos otros productos de ejecución del motor en la carpeta que especificamos como directorio de salida. Esos serán el archivo de transcripción (.log) y, ¡Voilá!, el archivo PDF de salida principal.

Una forma alternativa de escribir el archivo PDF de salida principal

Hay otro constructor de la clase PdfDevice, que nos permite obtener el archivo PDF resultante de una forma alternativa.

 1// Create the stream to write the PDF file to.
 2final OutputStream pdfStream = new FileOutputStream(Utils.getOutputDirectory() + "any-name.pdf");
 3try {
 4  // Create conversion options for Object LaTeX format upon Object TeX engine extension.
 5  ...
 6    // Run LaTeX to PDF conversion.
 7    new TeXJob(Utils.getInputDirectory() + "hello-world.ltx", new PdfDevice(pdfStream), options).run();
 8} finally {
 9  if (pdfStream != null)
10    pdfStream.close();
11}

El archivo any-name.pdf en el directorio especificado será nuestro archivo PDF de salida principal. Al mismo tiempo, a diferencia de salida de imagen, no encontraremos ningún archivo PDF en el directorio de salida definido por las opciones de conversión. Excepción: cualquier nombre.pdf está ubicado (por su ruta) en el mismo directorio del sistema de archivos asignado a la opción OutputWorkingDirectory usando OutputFileSystemDirectory.

Acerca de las opciones de entrada

En caso de que nuestro archivo de entrada principal requiera dependencias, por ejemplo, paquetes, que no están incluidos en el sistema LaTeX básico y los paquetes compatibles, DEBEMOS configurar la opción RequiredInputDirectory de la misma manera que configuramos OutputWorkingDirectory. opción y coloque las dependencias en ese directorio. Las dependencias pueden organizarse arbitrariamente en subdirectorios. En caso de que tengamos nuestros propios archivos para incluir durante el proceso de composición tipográfica, digamos archivos de gráficos externos, DEBEMOS también configurar InputWorkingDirectory usando la ruta a la ubicación donde se recopilan esos archivos. También podemos colocar el archivo de entrada principal en algún lugar dentro del directorio de entrada y especificar la ruta relativa en el método run() (o no especificar ninguna ruta si el archivo de entrada principal está en la raíz). Aquí se encuentran los detalles sobre el concepto de directorio de entrada en Aspose.TeX para Java y las implementaciones proporcionadas.

Otras opciones de trabajo TeX se analizan aquí.

También puede consultar la aplicación web gratuita de conversión de LaTeX a PDF creada en base a la API Aspose.TeX para .NET. Aquí es la página de la versión de Java.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.