LaTeX a la imagen | Aspose.TeX para Java

Aspose.TeX for Java provides features for converting LaTeX files to a number of raster image formats.

Cómo convertir LaTeX a PNG

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

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 PNG format.
6options.setSaveOptions(new PngSaveOptions());
7// Run LaTeX to PNG conversion.
8new TeXJob(Utils.getInputDirectory() + "hello-world.ltx", new ImageDevice(), 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 la instancia de objectLaTeX() 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 Object LaTeX es en realidad 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 PNG, es la instancia de clase PngSaveOptions, que nos permite especificar la resolución de las imágenes de salida.

A continuación, 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 PNG, es una instancia de clase ImageDevice (que es común a todos los formatos de imagen admitidos). 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.png (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, ¡Voila!, los archivos de imagen PNG de salida principal.

Una forma alternativa de escribir los archivos PNG de salida principales

Hay otra forma de obtener datos de imagen como una matriz de matrices de bytes; cada matriz en la segunda dimensión representa datos de imagen para una página separada.

 1// Create conversion options instance.
 2...
 3// Initialize the options for saving in PNG format.
 4PngSaveOptions saveOptions = new PngSaveOptions();
 5// Set this property to instruct the device not to output images as you will access them alternatively.
 6saveOptions.deviceWritesImages(false);
 7options.setSaveOptions(saveOptions);
 8// Create the image device.
 9ImageDevice device = new ImageDevice();
10// Run LaTeX to PNG conversion.
11new TeXJob(Utils.getInputDirectory() + "hello-world.ltx", device, options).run();
12
13// Save pages file by file.
14for (int i = 0; i < device.getResult().length; i++)
15{
16  final OutputStream fs = new FileOutputStream(Utils.getOutputDirectory() + MessageFormat.format("page-{0}.png", (i + 1)));
17  try {
18    fs.write(device.getResult()[i], 0, device.getResult()[i].length);
19  } finally {
20    if (fs != null)
21      fs.close();
22  }
23}

Los archivos “page-n.png” se escribirán en cualquier ruta que especifiquemos. A diferencia de Salida PDF, duplicarán los archivos PNG de salida escritos en el directorio de salida.

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 en TeX se analizan aquí.

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

A continuación, analizamos la conversión de LaTeX a otros formatos de imágenes rasterizados compatibles. No entraremos en detalles sólo porque en realidad no hay ningún detalle. La única diferencia está en el tipo de propiedad SaveOptions en las opciones de conversión.

Cómo convertir LaTeX a JPG

1// Create conversion options instance.
2...
3// Initialize the options for saving in JPEG format.
4options.SaveOptions = new JpegSaveOptions();

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

Cómo convertir LaTeX a TIFF

1// Create conversion options instance.
2...
3// Initialize the options for saving in TIFF format.
4options.SaveOptions = new TiffSaveOptions();

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

Cómo convertir LaTeX a BMP

1// Create conversion options instance.
2...
3// Initialize the options for saving in BMP format.
4options.SaveOptions = new BmpSaveOptions();

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

Cómo convertir LaTeX a SVG

Y otro formato de destino admitido es SVG. Scalable Vector Graphics (SVG) es un formato de imagen vectorial basado en XML para definir gráficos bidimensionales, con soporte para interactividad y animación.

Las imágenes SVG se definen en un formato de gráficos vectoriales y se almacenan en archivos de texto XML. Esto significa que las imágenes SVG se pueden escalar en tamaño sin pérdida de calidad, y los archivos SVG se pueden buscar, indexar, codificar y comprimir. Los archivos de texto XML se pueden crear y editar con editores de texto o editores de gráficos vectoriales. Son renderizados por los navegadores web más utilizados.

Además, existe la biblioteca Aspose.SVG que tiene varias características basadas en el formato SVG. Estos incluyen crear, cargar, editar y convertir documentos SVG.

La conversión a SVG es tan simple como la conversión a formatos de imagen rasterizada, excepto que además de SaveOptions, tenemos que cambiar el dispositivo a una instancia de SvgDevice clase.

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 SVG format.
6options.setSaveOptions(new SvgSaveOptions());
7// Run LaTeX to SVG conversion.
8new TeXJob(Utils.getInputDirectory() +  "hello-world.ltx", new SvgDevice(), options).run();

También puede consultar la aplicación web gratuita de conversión de LaTeX a SVG creada en base a 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.