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 giver en enkel API til konvertering .tex Denne artikel viser minimální konvertor jednoho souboru a robustní batch pipeline, kterou můžete spustit do jakékoliv aplikace .NET.
Forudsætninger
- .NET 6 eller nyere
- Nulpakke til:
Aspose.TeX - LaTeX kilder, der udarbejder en LaTeX-motor, der bruges til at udføre objekter Aspose.TeX
Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice,a) a PngSaveOptions Det er en PNG-udgang.
Minimální konverze: jeden soubor LaTeX na PNG
Dette eksempel forvandler hello-world.ltx (Himlen er .texPNG i udgangsfilen.Systemet skriver direkte på billedfiler.
// 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);
}
}
Det er følgende dokumenterede formel: skabe TeXOptions,Set på OutputWorkingDirectory,Set på PngSaveOptions,Så løber det en TeXJob med en ImageDevice.
Batch konverteringer: alle .tex Sæt i arkivet
Batch version scanner indgangsadresse til alle .tex Det er som at læse, hvor man kan læse, hvor man kan læse.
// 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;
}
}
Hovedperson for batch jobs:
- Brugte
InputWorkingDirectoryAktivt som det er\includegraphics{img.png}. - Brugte
RequiredInputDirectoryHvis du skal give yderligere pakker med LaTeX uden for den gamle bygning. - Set af
JobNameUdvikle udgivelsesnavne for filer efter dokument.
Billeder i hukommelsen i stedet for billeder i hukommelsen
Hvis du foretrækker at streame PNG-filer selv, skal du selv udelukke deres udstyr ved at slukke de direkte filer.
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);
}
}
At afspore den dokumenterede »alternative måde« at skrive hovedindgangs PNG-filer.
Løsning af problemer med tip
- Udsendelse:• Forøgelse
PngSaveOptions.Resolutionfor øvre mønstre i billedskærme på nettet eller i udskrivningsaktiver. - Afhængighed: indsæt eget pakke en indgang til adresser
RequiredInputDirectorya)InputWorkingDirectory. - Navnliggørelsen:• sæt
options.JobNameForudsigelse af navne på udløb i batch. - Logering:• Motor skriver transkript
.logTil udgangsmeddelelsen, der er nyttig til debugering af fejl i LaTeX-pakker.
Når du vælger andre formater
PNG er ideelt til webbaseret publikation af en brugergrænseflade. Hvis du har brug for vektorudgang til endeløs zoom eller lille tekst til en størrelse, skal du bruge SVG SvgSaveOptions En af SvgDevice, nebo do PDF pro dokumenty na stránkach. Převodový tok zůstává stejný.
Med disse formler kan du automatisere LaTeX på PNG i .NET-området og samtidig bevare fuld kontrol over udbredelsen, adressering og behandling af filer.