La reproducción de la parte de LaTeX en PNG es un requisito común para la τεκμηρίωση ιστού, las bases de conocimientos y las aplicaciones matemáticas. Aspose.TeX for .NET proporciona una API simple para convertir .tex fuentes en imágenes raster con control de las listas de salida y de análisis. Este artículo muestra un mínimo convertidor de un archivo y un potente tubeline partide que se puede lanzar en cualquier aplicación .NET.

Condiciones

  • .NET 6 o versiones posteriores
  • En el paquete: Aspose.TeX
  • Palabras que se escriben en la máquina Objeto LaTeX utilizado por Aspose.TeX

Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice,y PngSaveOptions Para crear un PNG.


Eliminar archivos: archivo de archivos de PNG

El ejemplo transforma hello-world.ltx (o .tex) en PNG en un dossier de salida.

// File: Program.cs
// NuGet: Aspose.TeX

using System;
using System.IO;
using Aspose.TeX;

class Program
{
    static void Main()
    {
        var inputFile  = Path.GetFullPath("hello-world.tex"); // or .ltx
        var outputDir  = Path.GetFullPath("out-png");
        Directory.CreateDirectory(outputDir);

        // 1) Create conversion options for Object LaTeX
        TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);

        // 2) Choose where to write output files
        options.OutputWorkingDirectory = new OutputFileSystemDirectory(outputDir);

        // 3) Save as PNG (you can set resolution if required)
        var png = new PngSaveOptions
        {
            // Resolution = 300 // uncomment to render at 300 DPI
        };
        options.SaveOptions = png;

        // 4) Run the job. ImageDevice writes PNG files into the output directory.
        var device = new ImageDevice();
        new TeXJob(inputFile, device, options).Run();

        Console.WriteLine("PNG written to: " + outputDir);
    }
}

Esto sigue el estándar documentado: crear TeXOptions,ΣΕΤ OutputWorkingDirectory,ΣΕΤ PngSaveOptions,Entonces, corre una TeXJob con una ImageDevice.

Batería de la batería: Todo .tex Archivo en un archivo

La versión de la lista de entradas de un catálogo y transforma cada .tex También muestra cómo controlar dónde se leen las dependencias y los gráficos que se incluyen.

// File: BatchLatexToPng.cs
// NuGet: Aspose.TeX

using System;
using System.IO;
using Aspose.TeX;
using Aspose.TeX.IO;
using Aspose.TeX.Presentation.Image;

public static class BatchLatexToPng
{
    public static int Run(string inputDir, string outputDir, int? dpi = null)
    {
        if (!Directory.Exists(inputDir))
        {
            Console.Error.WriteLine("Input directory not found: " + inputDir);
            return 1;
        }
        Directory.CreateDirectory(outputDir);

        // Configure conversion options once and reuse
        var options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);

        // Where to read auxiliary inputs (e.g., included images)
        options.InputWorkingDirectory = new InputFileSystemDirectory(inputDir);

        // Where to read extra required packages (if you supply them)
        // options.RequiredInputDirectory = new InputFileSystemDirectory(Path.Combine(inputDir, "texmf"));

        // Where to write PNG, log, aux, etc.
        options.OutputWorkingDirectory = new OutputFileSystemDirectory(outputDir);

        // PNG save options (set DPI if needed)
        var png = new PngSaveOptions();
        if (dpi.HasValue) png.Resolution = dpi.Value;
        options.SaveOptions = png;

        int ok = 0, err = 0;
        var device = new ImageDevice(); // will write images to OutputWorkingDirectory

        foreach (var texPath in Directory.GetFiles(inputDir, "*.tex", SearchOption.AllDirectories))
        {
            try
            {
                // Optional: set a job name so output files have predictable names
                options.JobName = Path.GetFileNameWithoutExtension(texPath);

                new TeXJob(texPath, device, options).Run();
                Console.WriteLine("OK  " + Path.GetRelativePath(inputDir, texPath));
                ok++;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERR " + Path.GetRelativePath(inputDir, texPath) + " | " + ex.Message);
                err++;
            }
        }

        Console.WriteLine($"Done. Success: {ok}, Failed: {err}");
        return err == 0 ? 0 : 2;
    }
}

Puntos clave para los puestos de trabajo de las partidas:

  • Utilización InputWorkingDirectory Para los elementos de la materia como \includegraphics{img.png}.
  • Utilización RequiredInputDirectory si necesita proporcionar paquetes adicionales de LaTeX fuera del conjunto integrado.
  • ΣΕΤ JobName Influir en los archivos de salida por documento.

Registrar imágenes en la memoria en lugar de registrar archivos

Si prefiere hacer streaming de bytes PNG por sí mismo, deje que el dispositivo los guarde cerrando los archivos escritos.

using System;
using System.IO;
using Aspose.TeX;
using Aspose.TeX.Presentation.Image;

static void ConvertToStreams(string inputFile, string outputDir)
{
    Directory.CreateDirectory(outputDir);

    var options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
    var png     = new PngSaveOptions { DeviceWritesImages = false };
    options.SaveOptions = png;

    var device = new ImageDevice();
    new TeXJob(inputFile, device, options).Run();

    for (int i = 0; i < device.Result.Length; i++)
    {
        var pageBytes = device.Result[i];
        var outPath   = Path.Combine(outputDir, $"page-{i + 1}.png");
        File.WriteAllBytes(outPath, pageBytes);
    }
}

Esto refleja el «alternativo» para escribir los archivos principales de la salida PNG.


Servicios y tips

  • Resolución:• Aumento PngSaveOptions.Resolution para más tipos de imágenes en imágenes Retina o en activos impresos.
  • dependencias:• Coloca los paquetes y entradas personalizados en las listas que se determinan por RequiredInputDirectory y InputWorkingDirectory.
  • Nombre:ΣΕΤ options.JobName para los nombres de archivos de salida previsible en lotes.
  • Contabilidad:La máquina escribe una transcripción .log en el directorio de salida, que es útil para la solución de los paquetes y errores que faltan en LaTeX.

¿Cuándo elegir otras formas

PNG es ideal para la publicación en la web e integración de la interfaz de usuario. Si necesitas una salida para un texto en escala, dirígete a SVG utilizando SvgSaveOptions Y una SvgDevice, o en PDF para archivos de páginas.

Con estos estándares, puede automatizar LaTeX a PNG a escala en .NET, manteniendo al mismo tiempo el control completo de la análisis, los catálogos y el procesamiento de archivos.

More in this category