El rendiment de lot de LaTeX a PNG és un requisit comú per a la documentació web, les bases de coneixements i les aplicacions matemàtiques. Aspose.TeX for .NET proporciona una API senzilla per convertir .tex fonts en imatges de raster amb control sobre directori de sortida i resolució. Aquest article mostra un convertidor de fitxer únic mínim i un robust pipeline de batxines que es pot llançar a qualsevol aplicació .NET.

Prerequisits

  • .NET 6 o posterior
  • El paquet de núvols: Aspose.TeX
  • Fonts LaTeX que compilen sota el motor Object LaTeX utilitzat per Aspose.TeX

Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, i PngSaveOptions Per a la producció de PNG.


Conversió mínima: un arxiu PNG a LaTeX

Aquest exemple converteix hello-world.ltx (o el .tex) a PNG en una carpeta de sortida. El dispositiu escriu directament els arxius d’imatge.

// 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);
    }
}

Aquest és el model documentat: crear TeXOptions,El set OutputWorkingDirectory,El set PngSaveOptions,Després, corria a TeXJob Amb un ImageDevice.

Conversió de batxillerat: tot .tex Arxius en una carpeta

La versió de lot escaneja un directori d’entrada i converteix cada .tex També mostra com controlar d’on es llegeixen les dependències i els gràfics inclosos.

// 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;
    }
}

Punts clau per a batxillerat:

  • utilitzar InputWorkingDirectory Per a actius com \includegraphics{img.png}.
  • utilitzar RequiredInputDirectory Si heu de proporcionar paquets LaTeX addicionals fora del conjunt integrat.
  • Set JobName Permet influir en els noms de fitxers per document.

Capturar imatges en la memòria en lloc d’escriure arxius

Si prefereixes fluir els bytes PNG tu mateix, deixa que el dispositiu els bufés desactivant els escrits directes de fitxers.

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);
    }
}

Això reflecteix la documentada “mètode alternativa” per escriure els arxius PNG de sortida principal.


Resolució de problemes & Tips

  • Resolució:• Augment PngSaveOptions.Resolution per a fórmules més clares en captures de pantalla de retina o en actius d’impressió.
  • Dependències: col·locar paquets i entrades personalitzats en els directori especificats per RequiredInputDirectory i InputWorkingDirectory.
  • Només:• Set options.JobName Nom de fitxer de sortida predictible en batxers.
  • Logotip:El motor escriu una transcripció .log a la direcció de sortida, que és útil per a la depuració de paquets mancats i errors de LaTeX.

Quan triar altres formats

PNG és ideal per a la publicació web i la incorporació d’interfície d’usuari. Si necessiteu sortida vectorial per a zoom infinit o text petit a escala, canviar a SVG mitjançant l’ús de SvgSaveOptions i un SvgDevice, o al PDF per a documents de pàgines. El flux de conversió es manté el mateix.

Amb aquests patrons, podeu automatitzar LaTeX a PNG a escala en .NET mantenint el control total sobre la resolució, els directori i el maneig de fitxers.

More in this category