فرمت بخش LaTeX به PNG یک نیاز مشترک برای سند وب، پایگاه دانش و برنامه های ریاضی سنگین است. Aspose.TeX for .NET یک API ساده برای تبدیل .tex منابع به تصاویر راستر با کنترل بر دیپلمات های خروج و resolutions.This مقاله نشان می دهد یک تبدیلگر واحد فایل حداقل و یک خط خط قوی شما می توانید به هر برنامه .NET.
پیش فرض
- .NET 6 یا بعد
- بسته بندی نوکیا:
Aspose.TeX - منابع LaTeX که تحت موتور Object LaTeX را با استفاده از Aspose.TeX جمع آوری می کنند
Aspose.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,- Set OutputWorkingDirectory,- Set PngSaveOptions,سپس به A Run TeXJob با یک ImageDevice.
تبدیل بلیت: همه .tex فایل ها در یک فاکتور
نسخه باریک یک دیپلم واردات را اسکن می کند و هر یک از آن ها را تبدیل می کند. .tex همچنین نشان می دهد که چگونه کنترل می شود که از کجا بستگی ها و گرافیک شامل خوانده می شوند.
// File: BatchLatexToPng.cs
// NuGet: Aspose.TeX
using System;
using System.IO;
using Aspose.TeX;
using Aspose.TeX.IO;
using Aspose.TeX.Presentation.Image;
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;
using Aspose.TeX.Presentation.Image;
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برای نام فایل های پیش بینی شده در فرآیند بارداری. - لوگو:• موتور نوشتن یک ترافیک
.logبه دیپلم خروجی، که برای دابغ کردن بسته های ناپدید شده و خطاهای LaTeX مفید است.
وقتی می توانیم فرمت های دیگر را انتخاب کنیم
PNG برای انتشار وب و نصب UI ایده آل است.اگر برای زوم بی نهایت یا متن کوچک در اندازه نیاز دارید، با استفاده از SVG به SVG تبدیل کنید. SvgSaveOptions و یک SvgDevice,در صورت مشاهده PDF، یا PDF برای دستاورد های صفحه ای. جریان تبدیل به یکسان باقی می ماند.
با استفاده از این مدل ها، شما می توانید LaTeX به PNG را در مقیاس خودکار کنید در .NET، در حالی که کنترل کامل بر resolutions، directories و پردازش فایل را حفظ می کنید.