Batch rendering LaTeX naar PNG is een gemeenschappelijke vereiste voor webdocumentatie, kennisbanken en wiskundige toepassingen. Aspose.TEX voor .NET biedt een eenvoudige API om te converteren .tex
bronnen in raster afbeeldingen met controle over output directories en resolutie. dit artikel toont een minimale single-file converter en een robuste batch pipeline die u in elke .NET-app kunt vallen.
Voorwaarden
- .NET 6 of later
- NuGet pakket:
Aspose.TeX
- LaTeX bronnen die worden gecompileerd onder de Object LaTex-motor die wordt gebruikt door Aspose.TEX
Aspose.TeX vertonen TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX)
, ImageDevice
, en PngSaveOptions
om PNG-productie te produceren.
Minimale conversie: één LaTeX bestand naar PNG
Dit voorbeeld converteert hello-world.ltx
(of .tex
) naar PNG in een output map. Het apparaat schrijft beeldbestanden rechtstreeks.
// 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);
}
}
Dit volgt het gedocumenteerde patroon: creëren TeXOptions
De set OutputWorkingDirectory
De set PngSaveOptions
Vervolgens rijden A TeXJob
Met een ImageDevice
.
Batch conversie: alle .tex
Bestanden in een map
De batchversie scanneert een input directory en converteert elk .tex
Het toont ook hoe te controleren waar afhankelijkheden en opgenomen graphics worden gelezen.
// 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;
}
}
Belangrijke punten voor batch jobs:
- Gebruik
InputWorkingDirectory
Inbegrepen activa zoals\includegraphics{img.png}
. - Gebruik
RequiredInputDirectory
als u extra LaTeX-pakketten buiten de ingebouwde set moet leveren. - Set op
JobName
om de productie van filenamen per document te beïnvloeden.
Foto’s opnemen in geheugen in plaats van bestanden schrijven
Als u liever om PNG byten zelf te streamen, laat het apparaat ze buffer door direct bestand schrijven af te wisselen.
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);
}
}
Dit spiegelt de gedocumenteerde “alternatieve manier” om de belangrijkste output PNG-bestanden te schrijven.
Problemen en tips
- Resolutie: verhoging
PngSaveOptions.Resolution
voor scherper formules in retina screenshots of gedrukte activa. - Dependencies: plaatsen van aangepaste pakketten en inputs in de door
RequiredInputDirectory
enInputWorkingDirectory
. - Naam * : Set
options.JobName
voor voorspelbare output bestandnamen in batch runs.
- Naam * : Set
- Logging: de motor schrijft een transcript
.log
naar de output directory, die nuttig is voor het ontgrendelen van verloren pakketten en LaTeX-fouten.
Wanneer kiezen voor andere formaten
PNG is ideaal voor webpublicatie en UI-integratie.Als u vectoruitgang nodig hebt voor oneindige zoom of kleine tekst op schaal, wisselen naar SVG door gebruik te maken van SvgSaveOptions
En een SvgDevice
, of naar PDF voor gepageteerde documenten. de conversie stroom blijft hetzelfde.
Met deze patronen kunt u LaTeX naar PNG automatiseren op schaal in .NET terwijl u volledige controle over resolutie, directories en bestandsbehandeling behouden.