راندینگ پاتچ 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 اتوماتیک کنید در حالی که کنترل کامل بر رزولوشن، دایرکتوری ها و مدیریت فایل ها را حفظ می کنید.