Batch rendering LaTeX ke PNG adalah persyaratan umum untuk dokumentasi web, basis pengetahuan, dan aplikasi matematika berat. Aspose.Tex untuk .NET menyediakan API yang mudah untuk konversi .tex sumber ke gambar raster dengan kontrol atas direktori output dan resolusi. artikel ini menunjukkan converter file tunggal minimal dan pipa batch yang kuat yang dapat Anda turun ke aplikasi .NET apa pun.

Persyaratan

  • .NET 6 atau lebih baru
  • Pakej yang baru: Aspose.TeX
  • Sumber-sumber LaTeX yang dikompilasi di bawah mesin Object LaTex yang digunakan oleh Aspose.TEX

Aspose.TeX eksposur TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, dan PngSaveOptions untuk menghasilkan produk PNG.

Konversi minimal: satu file LaTeX ke PNG

Contohnya adalah konversi hello-world.ltx (atau .tex) ke PNG dalam folder output. perangkat menulis file gambar secara langsung.

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

Ini mengikuti pola yang didokumentasikan: membuat TeXOptionsdan set OutputWorkingDirectorydan set PngSaveOptionsKemudian berlari A TeXJob Dengan satu ImageDevice.

Konversi Batch: Semua .tex File dalam folder

Versi batch memindai direktori input dan mengubah masing-masing .tex Ini juga menunjukkan bagaimana untuk mengontrol di mana ketergantungan dan grafis yang dimasukkan dibaca.

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

Titik-titik utama untuk pekerjaan batch:

  • Penggunaan InputWorkingDirectory Dengan adanya aset seperti \includegraphics{img.png}.
  • Penggunaan RequiredInputDirectory Jika Anda perlu menyediakan paket LaTeX tambahan di luar set terintegrasi.
  • Set yang JobName untuk mempengaruhi nama file produksi per dokumen.

Menangkap gambar dalam memori bukannya menulis file

Jika Anda lebih memilih untuk streaming byte PNG sendiri, biarkan perangkat buffer mereka dengan mengalihkan tulisan file langsung.

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

Ini mencerminkan “cara alternatif” yang didokumentasikan untuk menulis file PNG output utama.

Penyelesaian masalah dan tips

    • Resolusi * Peningkatan PngSaveOptions.Resolution Untuk formula yang lebih tajam dalam screenshots retina atau aset cetak.
  • Dependensi: menempatkan paket dan input tersuai dalam direktori yang ditentukan oleh RequiredInputDirectory dan InputWorkingDirectory.
    • Nama * Set options.JobName Untuk nama file output yang dapat diramalkan dalam batch run.
  • Logging: mesin menulis transkrip .log untuk direktori output, yang berguna untuk debugging paket yang hilang dan kesalahan LaTeX.

Kapan memilih format lain

PNG ideal untuk penerbitan web dan penyebaran UI. Jika Anda membutuhkan output vector untuk zoom tak terbatas atau teks kecil pada skala, beralih ke SVG dengan menggunakan SvgSaveOptions dan satu SvgDevice, atau ke PDF untuk dokumen yang dibayar. aliran konversi tetap sama.

Dengan pola ini, Anda dapat mengautomatikkan LaTeX ke PNG pada skala di .NET sambil menjaga kontrol penuh atas resolusi, direktori, dan pengelolaan file.

More in this category