Rendering dávek LaTeX na PNG je běžným požadavkem pro webovou dokumentaci, znalostní základny a matematicky náročné aplikace. Aspose.TeX for .NET poskytuje jednoduchý API pro konverzi .tex zdrojů do rasterových obrázků s kontrolou nad výstupními adresáři a rozlišením. Tento článek ukazuje minimální konvertor jednoho souboru a robustní batch pipeline, kterou můžete spustit do jakékoliv aplikace .NET.
Předpoklady
- .NET 6 nebo novější
- Nulový balíček:
Aspose.TeX - LaTeX zdroje, které kompilují pod Object LaTeX engine používaný Aspose.TeX
Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice,a PngSaveOptions Výsledkem je PNG výstup.
Minimální konverze: jeden soubor LaTeX na PNG
Tento příklad přeměňuje hello-world.ltx (nebo .texPNG v výstupní složce. Zařízení přímo zapisuje obrazové soubory.
// 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);
}
}
To je následující dokumentovaný vzorec: vytvořit TeXOptions,Set se OutputWorkingDirectory,Set se PngSaveOptions,Pak běží a TeXJob S jedním ImageDevice.
Batch konverze: všechny .tex Soubory v složce
Batch verze skenuje vstupní adresář a převádí každý .tex To také ukazuje, jak ovládat, kde závislosti a zahrnutá grafika jsou čteny.
// 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;
}
}
Hlavní body pro batch jobs:
- Použijte
InputWorkingDirectoryVčetně aktiv, jako jsou\includegraphics{img.png}. - Použijte
RequiredInputDirectorypokud je nutné poskytnout další balíčky LaTeX mimo vestavěnou sadu. - Set
JobNameovlivňovat výstupní názvy souborů podle dokumentu.
Zachycení obrázků v paměti namísto psaní souborů
Pokud preferujete streamovat PNG bajty sami, nechte zařízení vyrovnávat jejich vyrovnání vypnutím přímých souborů.
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);
}
}
To odráží zdokumentovaný „alternativní způsob“ psaní hlavních výstupních PNG souborů.
Řešení problémů a tipy
- usnesení:• zvýšení
PngSaveOptions.Resolutionpro ostřejší vzorce v snímcích obrazovky sítě nebo tiskových aktivach. - závislost: umístěte vlastní balíčky a vstupy do adresářů specifikovaných
RequiredInputDirectoryaInputWorkingDirectory. - Jmenování:• set
options.JobNamepředvídatelné názvy souborů výstupu v batch run. - Logování:• motor píše transkript
.logDo výstupního adresáře, který je užitečný pro debugování chybějících balíčků a chyb LaTeX.
Kdy zvolit jiné formáty
PNG je ideální pro webové publikování a vkládání uživatelského rozhraní. Pokud potřebujete vektorový výstup pro nekonečný zoom nebo malý text ve velikosti, přepněte na SVG pomocí SvgSaveOptions a jednoho SvgDevice, nebo do PDF pro dokumenty na stránkách. Převodový tok zůstává stejný.
S těmito vzorci můžete automatizovat LaTeX na PNG v rozsahu v .NET a zároveň si zachovat plnou kontrolu nad rozlišením, adresáři a zpracováním souborů.
More in this category
- LaTeX na SVG v .NET: Automatizujte se pomocí Aspose.TEX
- Latex Math v ASP.NET s Aspose.TeX
- Batch Convert LaTeX Math Formulas to Images with .NET (Konvertujte matematické vzorce LaTex na obrázky s .NET)
- Batch Render Multiple LaTeX Figury jako snímky v .NET
- Dynamicky vyrovnávat matematické rovnice v běhu v .NET s Aspose.TeX