Reprezentarea cu batch LaTeX la PNG este o cerință comună pentru documentarea web, bazele de cunoștințe și aplicațiile matematice. Aspose.TEX pentru .NET oferă o API simplă de conversie .tex sursă în imagini raster cu control asupra directorilor de ieșire și rezoluție. Acest articol arată un convertor de fișiere unică minim și un tub robust de batch pe care îl puteți descărca în orice aplicație .NET.

Prevederile

  • .NET 6 sau mai târziu
  • Pachetul nu este: Aspose.TeX
  • Sursele LaTeX care compilează sub motorul Object LaTEX utilizat de Aspose.Tex

Aspose.TeX expoziții TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, şi PngSaveOptions pentru a produce PNG.

Conversie minimă: un fișier LaTeX în PNG

Acest exemplu convertează hello-world.ltx (sau .tex) la PNG într-o folder de ieșire. dispozitivul scrie fișierele imaginii direct.

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

Acest lucru urmează modelul documentat: creați TeXOptionsSetul OutputWorkingDirectorySetul PngSaveOptionsDupă aceea, rulează a TeXJob Cu un ImageDevice.

Conversie de batch: toate .tex Fișierele într-un folder

Versiunea batch scanează un director de intrare și convertează fiecare .tex De asemenea, arată cum să controlezi de unde sunt citite dependențele și graficele incluse.

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

Principalele puncte pentru locuri de muncă de batch:

  • Utilizarea InputWorkingDirectory pentru activele incluse ca \includegraphics{img.png}.
  • Utilizarea RequiredInputDirectory dacă trebuie să furnizați pachete suplimentare LaTeX în afara setului încorporat.
  • Setul JobName să influențeze numele de producție prin document.

Capturează imagini în memorie în loc de a scrie fișiere

Dacă preferați să transmiteți byte PNG singur, lăsați dispozitivul să le buffer prin descărcarea scripturilor de fișier direct.

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

Acest lucru reflectă modul documentat “alternativ” de a scrie fișierele PNG de ieșire principală.

Problema de rezolvare și sfaturi

  • ** Rezoluție**: creștere PngSaveOptions.Resolution pentru formule mai ascuțite în ecranele retinei sau activele imprimate.
  • Dependențe: plasă pachete și intrări personalizate în directorii specificate de RequiredInputDirectory şi InputWorkingDirectory.
  • Cuvânt cheie: set options.JobName pentru numele de fișier de ieșire previzibil în batch runs.
  • Logging: motorul scrie o transcriptă .log la directorul de ieșire, care este util pentru debugarea pachetelor lipsite și a erorilor LaTeX.

Când să alegeți alte formate

PNG este ideal pentru publicarea web și integrarea UI. Dacă aveți nevoie de o ieșire vector pentru un zoom infinit sau un text mic la scară, schimbați-vă la SVG folosind SvgSaveOptions şi un SvgDevice, sau în PDF pentru documentele plătite. fluxul de conversie rămâne același.

Cu aceste modele, puteți automatiza LaTeX la PNG la scară în .NET, menținând tot timpul controlul asupra rezoluției, directorilor și gestionării fișierelor.

More in this category