Batch rendering LaTeX to PNG web belgeleri, bilgi tabanları ve matematiksel ağır uygulamalar için yaygın bir gerekliliktir. Aspose.TEX for .NET dönüştürmek için basit bir API sağlar .tex çıkış dizinleri ve çözünürlük kontrolü ile resim kaynakları. bu makalede herhangi bir .NET uygulamasında düşebileceğiniz en az bir tek dosya dönüştürücü ve sağlam bir batch pipeline gösterilir.

Ön koşullar

  • .NET 6 veya sonraki
  • Bu paket için: Aspose.TeX
  • Aspose.TeX tarafından kullanılan Object LaTEX motoru altında toplanan LaTex kaynakları

ASPOSE.TEX Yorumları TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, ve PngSaveOptions PNG üretimi için.

Minimum dönüşüm: 1 LaTeX dosyası PNG’ye

Bu örnek dönüştürülür hello-world.ltx (ya da .tex) bir çıkış klasöründe PNG’ye. cihaz görüntü dosyalarını doğrudan yazar.

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

Bu belgelendirilmiş şablonu takip eder: oluşturmak TeXOptions, set OutputWorkingDirectory, set PngSaveOptionsArdından koşmak a TeXJob ile bir ImageDevice.

Batch dönüştürme: tüm .tex Dosyaları bir klasörde

Batch versiyonu bir giriş dizinini tarar ve her birini dönüştürür. .tex Ayrıca, bağımlılıkların ve grafiklerin nereden okunduğunu kontrol etmenin yollarını da gösterir.

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

Batch işleri için önemli noktalar:

  • Kullanımı InputWorkingDirectory içerdiği varlıklar gibi \includegraphics{img.png}.
  • Kullanımı RequiredInputDirectory Eğer yerleşik setin dışında ek LaTeX paketleri sunmanız gerekiyorsa.
  • seti JobName Üretimi belgeye göre filenamaları etkilemek.

Dosyaları yazmak yerine hafıza görüntüleri yakalamak

PNG baytları kendiniz aktarmayı tercih ederseniz, cihazın doğrudan dosya yazılarını devre dışı bırakarak bunları buffer etmesine izin verin.

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

Bu, ana çıkış PNG dosyalarını yazmak için belgelendirilmiş “alternatif yol” yansıtır.

Sorun çözümü ve ipuçları

  • ** Çözüm**: artış PngSaveOptions.Resolution retina ekran görüntüleri veya baskı varlıklarında daha keskin formüller için.
  • Dependencies: Özel paketleri ve girişleri belirlenen dizinlere yerleştirin RequiredInputDirectory ve InputWorkingDirectory.
    • Adı * Set options.JobName tahmin edilebilir çıkış dosya isimleri için batch koşu.
  • Logging: motor bir transkrip yazar .log kayıp paketleri ve LaTeX hataları debugging için yararlı olan çıkış dizinine.

Diğer formatları ne zaman seçmelisiniz

PNG web yayıncılığı ve UI entegre etmek için idealdir. sonsuz zoom veya ölçekte küçük metin için vektör çıkışı gerekiyorsa, kullanarak SVG’ye geçin SvgSaveOptions ve bir SvgDevice, veya paketli belgeler için PDF’ye. dönüşüm akışı aynı kalır.

Bu modellerle, LaTeX’i .NET’te ölçekte PNG’ye otomatikleştirebilirsiniz ve aynı zamanda çözünürlük, dizinler ve dosya yönetimi üzerinde tam kontrolünüzü koruyabilirsiniz.

More in this category