Batch rendering LaTeX til PNG er et almindeligt krav til webdokumentation, videnbaser og matematiske applikationer. Aspose.TEX for .NET giver en simpel API til konvertering .tex kilder til rasterbilleder med kontrol over output directories og opløsning. Denne artikel viser en minimal single-file converter og en robust batch pipeline, du kan droppe ind i enhver .NET app.

Forudsætninger

  • .NET 6 eller senere
  • NuGet pakke: Aspose.TeX
  • LaTeX-kilder, der indsamler under Object LaTex-motoren, som anvendes af Aspose.TEX

Aspose.TeX udstillinger TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, og PngSaveOptions at producere PNG-produktion.

Minimum konvertering: en LaTeX fil til PNG

Dette eksempel konverterer hello-world.ltx (eller .tex) til PNG i en output mappe. enheden skriver billedfiler direkte.

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

Dette følger det dokumenterede mønster: skabe TeXOptionsSæt OutputWorkingDirectorySæt PngSaveOptionsSå løber A TeXJob Med en ImageDevice.

Batch konvertering: Alt .tex Filer i en mappe

Batch-versionen scanner et input-diagram og konverterer hver .tex Det viser også, hvordan man kontrollerer, hvor afhængigheder og inkluderede grafik læses fra.

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

Nøglepunkter for batch jobs:

  • Brug af InputWorkingDirectory For så vidt angår aktiver som \includegraphics{img.png}.
  • Brug af RequiredInputDirectory Hvis du skal levere yderligere LaTeX-pakker uden for det indbyggede sæt.
  • Sæt JobName at påvirke produktionsfilene pr. dokument.

Fanger billeder i hukommelse i stedet for at skrive filer

Hvis du foretrækker at streame PNG bytes selv, lad enheden buffer dem ved at afbryde direkte filer.

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

Dette spejler den dokumenterede “alternative måde” at skrive de vigtigste output PNG-filer.

Problemløsning og tips

  • Resolution: Øget PngSaveOptions.Resolution for skarpere formler i retina screenshots eller trykte aktiver.
  • Afhængigheder: Placerer tilpassede pakker og indtægter i de kataloger, der er angivet af RequiredInputDirectory og InputWorkingDirectory.
  • ** Navn**: sæt options.JobName for forudsigelige udgangsfilnavne i batch-runs.
  • Logging: Motoren skriver en transkription .log til udgangsdiagrammet, som er nyttigt til debugging af savnede pakker og LaTeX-fejl.

Hvornår skal man vælge andre formater

PNG er ideel til webudgivelse og UI indsættelse. Hvis du har brug for vektorudgang til uendelig zoom eller lille tekst i skalaen, skift til SVG ved at bruge SvgSaveOptions Og en SvgDevice, eller til PDF for betalte dokumenter. konverteringsstrømmen forbliver den samme.

Med disse mønstre kan du automatisere LaTeX til PNG på skala i .NET samtidig med at du har fuld kontrol over opløsning, kataloger og filhåndtering.

More in this category