El rendiment de batxillerat LaTeX a PNG és un requisit comú per a la documentació web, les bases de coneixements i les aplicacions matemàtiques pesades. Aspose.TEX per .NET proporciona una API senzilla per convertir .tex fonts en imatges de raster amb control sobre directoris de sortides i resolució. aquest article mostra un convertidor de fitxers únics mínim i un tub de batxeta robust que es pot llançar a qualsevol aplicació .NET.

Prerequisits

  • .NET 6 o més tard
  • El paquet de NuGet: Aspose.TeX
  • Fonts de laTeX que compilen sota el motor de l’Object LaTEX utilitzat per Aspose.Tex

Aspose.TeX exposició TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, i PngSaveOptions Producció de PNG.

Conversió mínima: un arxiu LaTeX a PNG

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

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

Segueix el patró documentat: creació TeXOptionsEl set OutputWorkingDirectoryEl set PngSaveOptionsA continuació, a TeXJob Amb un ImageDevice.

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

La versió de batxillerat escaneix 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;

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 les tasques de batxillerat:

  • Use InputWorkingDirectory Els actius inclosos com \includegraphics{img.png}.
  • Use RequiredInputDirectory si vostè ha de proporcionar paquets LaTeX addicionals fora del conjunt incorporat.
  • Set JobName Per influir en els noms de producció per document.

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

Si prefereix stream PNG bytes vostè mateix, deixeu que el dispositiu buffer-los desactivant els escrits de fitxers directes.

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

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 el documentat “mode alternatiu” per escriure els arxius PNG de sortida principal.

Trastorns i consells

  • Resolució: augmentar PngSaveOptions.Resolution per a fórmules més acurades en pantalles de pantalla de la retina o els actius d’impressió.
  • Dependències: col·locar els paquets i les entrades personalitzats en els directoris especificats per RequiredInputDirectory i InputWorkingDirectory.
    • Nom * Set options.JobName per als noms de fitxers de sortides previsibles en les runes de batx.
  • Logging: el motor escriu un transcript .log a la direcció de sortides, que és útil per a debugir els paquets desapareguts i els errors de LaTeX.

Quan triar altres formats

PNG és ideal per a la publicació web i la incorporació d’UI. Si necessites una sortida de vector per al zoom infinit o un petit text a escala, canviar a SVG utilitzant SvgSaveOptions i un SvgDevice, o a PDF per a documents pagats. El flux de conversió es manté el mateix.

Amb aquests patrons, vostè pot automatitzar LaTeX a PNG a escala en .NET mentre manté el control complet sobre la resolució, els directoris i el tractament de fitxers.

More in this category