راندینگ پاتچ LaTeX به PNG یک الزام رایج برای مستندات وب، پایگاه های دانش و برنامه های کاربردی ریاضی است. Aspose.TEX برای .NET یک API ساده برای تبدیل فراهم می کند. .tex منبع به تصاویر راستر با کنترل بر روی دایرکتوری های خروجی و رزولوشن.این مقاله نشان می دهد یک تبدیل فایل تک حداقل و یک خط لوله بسته قوی شما می توانید به هر برنامه .NET.

پیش شرط

  • .NET 6 یا بیشتر
  • بسته بندی جدید : Aspose.TeX
  • منابع LaTeX که در زیر موتور Object LaTEX مورد استفاده توسط Aspose.Tex جمع آوری می شود

بایگانی برچسب ها: Tex Exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, و PngSaveOptions تولید تولید PNG

حداقل تبدیل: یک فایل LaTeX به PNG

این مثال تبدیل می شود hello-world.ltx (یا .tex) به PNG در یک پوشه خروجی. دستگاه فایل های تصویر را به طور مستقیم می نویسد.

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

این همان الگوی مستند است: ایجاد TeXOptionsتنظیمات OutputWorkingDirectoryتنظیمات PngSaveOptionsپس از آن یک TeXJob با یک ImageDevice.

بایگانی برچسب ها: همه .tex فایل ها در یک پوشه

نسخه بتچ یک دایرکتوری ورودی را اسکن می کند و هر یک از آن ها تبدیل می شود. .tex به PNG. آن را نیز نشان می دهد که چگونه برای کنترل از کجا اعتیاد و گرافیک شامل خوانده می شود.

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

نکات کلیدی برای شغل های بوتاکس:

  • استفاده InputWorkingDirectory از دارایی هایی مانند \includegraphics{img.png}.
  • استفاده RequiredInputDirectory اگر شما نیاز به ارائه بسته های اضافی LaTeX خارج از مجموعه ساخته شده.
  • تنظیمات JobName برای تأثیرگذاری فایلهای تولید در هر سند.

ضبط تصاویر در حافظه به جای نوشتن فایل ها

اگر ترجیح می دهید بایت های PNG را به خودتان پخش کنید، اجازه دهید دستگاه آنها را با خاموش کردن نوشته های فایل مستقیم بوفور کند.

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

این نشان دهنده “راه جایگزین” مستند برای نوشتن فایل های اصلی خروجی PNG است.

حل مشکلات و راهنمایی ها

  • تصمیم گیری: افزایش PngSaveOptions.Resolution برای فرمول های تیز تر در عکس های صفحه نمایش شبکیه یا دارایی های چاپ شده.
  • تعهدات: قرار دادن بسته های سفارشی و ورودی ها در دایرکتوری های مشخص شده توسط RequiredInputDirectory و InputWorkingDirectory.
  • ** نام * : تنظیمات options.JobName برای نام های فایل خروجی قابل پیش بینی در مسیرهای بسته بندی.
  • Logging: موتور یک ترانسکریپت می نویسد .log به دایرکتوری خروجی، که برای تخلیه بسته های گمشده و خطاهای LaTeX مفید است.

چه زمانی می توانید فرمت های دیگر را انتخاب کنید

PNG ایده آل برای انتشار وب و قرار دادن UI است.اگر شما نیاز به خروجی وکتور برای زوم بی نهایت و یا متن کوچک در مقیاس، با استفاده از SVG به SvgSaveOptions و یک SvgDevice, یا به PDF برای اسناد پرداخت شده. جریان تبدیل یکسان باقی می ماند.

با استفاده از این الگوهای، شما می توانید LaTeX را به PNG در مقیاس در .NET اتوماتیک کنید در حالی که کنترل کامل بر رزولوشن، دایرکتوری ها و مدیریت فایل ها را حفظ می کنید.

More in this category