LaTeX a la imagen | Aspose.TeX para Python
Aspose.TeX para Python nos proporciona la capacidad de convertir archivos LaTeX en varios formatos de imágenes rasterizadas.
Conversión de LaTeX a PNG
Ahora, examinemos en profundidad el código Python que ofrece el enfoque más sencillo para convertir LaTeX a formato PNG.
1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in PNG format.
6options.save_options = PngSaveOptions()
7
8# Run LaTeX to PNG conversion.
9TeXJob(path.join(Util.input_directory, "hello-world.ltx"), ImageDevice(True), options).run()
Para empezar, necesitamos crear una instancia de la clase TeXOptions usando el método console_app_options(). No te preocupes por el nombre, es sólo el método estático que crea la instancia. Este método toma la instancia object_latex de la clase TeXConfig, que es perfecta para convertir un archivo LaTeX. Esta configuración configura el motor Object TeX para cargar el formato Object LaTeX y estar listo para procesar el archivo LaTeX. El formato Object LaTeX es esencialmente el mismo que el formato LaTeX, pero utiliza primitivas específicas de Object TeX para definir las métricas de la página.
La primera de las opciones necesarias es output_working_directory, que especifica la ubicación donde se guardará la salida TeX. Si está interesado, puede obtener más información sobre el concepto de directorio de salida en Aspose.TeX para Python. En este ejemplo particular, utilizamos la clase OutputFileSystemDirectory para escribir la salida en un directorio o carpeta específica.
La segunda opción es una instancia de la clase SaveOptions, que se encarga de gestionar la conversión del modelo de objeto al formato deseado. En este caso, dado que estamos convirtiendo LaTeX a PNG, usamos la instancia de clase PngSaveOptions, que nos permite especificar la resolución de las imágenes de salida.
A continuación, creamos una instancia de la clase
TeXJob. En este caso, como queremos convertir un archivo LaTeX almacenado en el sistema de archivos, usamos
esta versión del constructor. Necesitamos proporcionar la ruta completa al archivo; de lo contrario, el motor lo buscará en el directorio actual (que es el directorio de trabajo del script) y es posible que no lo encuentre. Sin embargo, la extensión .tex
se puede omitir ya que el motor la agregará automáticamente. El segundo argumento del constructor es una instancia de la 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. Finalmente, pasamos las opciones de conversión preparadas como último argumento.
Ahora, todo lo que queda es ejecutar el trabajo.
Una vez ejecutado el trabajo, independientemente de su éxito o fracaso, la primera salida que encontraremos es la salida del terminal. En el caso de una ejecución exitosa, el resultado será similar al siguiente:
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.
Los resultados del trabajo del motor se pueden encontrar en el directorio de salida que especificamos. Esto incluirá el archivo de transcripción y, lo más importante, los archivos de imagen PNG de salida principales.
Una forma alternativa de escribir los archivos PNG de salida principales
Existe un método alternativo para obtener datos de imagen como una matriz de matrices de bytes, donde cada matriz en la segunda dimensión representa los datos de imagen para una página separada.
1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in PNG format.
6so = PngSaveOptions()
7so.device_writes_images = False # Run LaTeX to PNG conversion.
8options.save_options = so
9device = ImageDevice(True)
10TeXJob(path.join(Util.input_directory, "hello-world.ltx"), device, options).run()
11
12# Save pages file by file.
13for i in range(len(device.result)):
14 with open(path.join(Util.output_directory, f"page-{(i + 1)}" + ".png"), "wb") as fs:
15 fs.write(device.result[i][0:len(device.result[i])])
Los archivos “page-n.png” se pueden escribir en cualquier ruta especificada. A diferencia de salida PDF, estos archivos PNG duplicarán los archivos PNG de salida que se escriben en el directorio de salida.
En cuanto a las opciones de entrada
Si nuestro archivo de entrada principal requiere dependencias, como paquetes que no están incluidos en el sistema LaTeX básico o paquetes compatibles, debemos configurar la opción
required_input_directory de manera similar a como configuramos la opción output_working_directory y coloque las dependencias en ese directorio. Las dependencias se pueden organizar en subdirectorios según sea necesario. Si tenemos nuestros archivos para incluir en el proceso de composición tipográfica, como archivos de gráficos externos, también debemos configurar el
input_working_directory en la ubicación donde se almacenan esos archivos. También podemos colocar el archivo de entrada principal 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 el directorio raíz. También hay más detalles sobre el
concepto de directorio de entrada en Aspose.TeX y las implementaciones proporcionadas descritas.
Conozca también otras opciones de trabajo TeX aquí.
También puede explorar la aplicación web gratuita para la conversión de LaTeX a PNG, que se desarrolla utilizando Aspose.TeX para .NET API.
A continuación, explicaremos brevemente la conversión de LaTeX a otros formatos de imágenes rasterizadas compatibles, sin entrar en demasiados detalles ya que no existen diferencias significativas. La única variación radica en el tipo de propiedad save_options en las opciones de conversión.
Conversión de LaTeX a JPG
1# Create conversion options instance.
2...
3# Initialize the options for saving in JPEG format.
4options.save_options = JpegSaveOptions()
También puede explorar la aplicación web gratuita para la conversión de LaTeX a JPG, que se desarrolla utilizando Aspose.TeX para .NET API.
Conversión de LaTeX a TIFF
1# Create conversion options instance.
2...
3# Initialize the options for saving in TIFF format.
4options.save_options = TiffSaveOptions()
También puede explorar la aplicación web gratuita para la conversión de LaTeX a TIFF, que se desarrolla utilizando Aspose.TeX para .NET API.
Conversión de LaTeX a BMP
1# Create conversion options instance.
2...
3# Initialize the options for saving in BMP format.
4options.save_options = BmpSaveOptions()
También puede explorar la aplicación web gratuita para la conversión de LaTeX a BMP, que se desarrolla utilizando Aspose.TeX para .NET API.
Conversión de LaTeX a SVG
Otro formato de destino admitido es SVG. Gráficos vectoriales escalables (SVG) es un formato de imagen vectorial basado en XML que se utiliza para definir gráficos bidimensionales. Soporta interactividad y animación.
Las imágenes SVG se almacenan en archivos de texto XML y se definen en un formato de gráficos vectoriales. Esto significa que las imágenes SVG se pueden escalar en tamaño sin perder calidad, y los propios archivos SVG se pueden buscar, indexar, codificar y comprimir. Los archivos de texto XML se pueden crear y editar utilizando editores de texto o editores de gráficos vectoriales, y se pueden representar mediante los navegadores web más utilizados.
La API Aspose.SVG ofrece una variedad de funciones para trabajar con SVG, como crear, cargar, editar y convertir documentos SVG.
Convertir LaTeX a SVG es tan sencillo como convertir a formatos de imagen rasterizada, con la única diferencia de que save_options debe configurarse en una instancia de la clase SvgSaveOptions y el El dispositivo debe cambiarse a una instancia de la clase SvgDevice.
1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in SVG format.
6options.save_options = SvgSaveOptions()
7# Run LaTeX to SVG conversion.
8TeXJob(path.join(Util.input_directory, "hello-world.ltx"), SvgDevice(), options).run()
También puede explorar la aplicación web gratuita para la conversión de LaTeX a SVG, que se desarrolla utilizando Aspose.TeX para .NET API.