El rendiment de lot de LaTeX a PNG és un requisit comú per a la documentació web, les bases de coneixements i les aplicacions matemàtiques. Aspose.TeX for .NET proporciona una API senzilla per convertir .tex fonts en imatges de raster amb control sobre directori de sortida i resolució. Aquest article mostra un convertidor de fitxer únic mínim i un robust pipeline de batxines que es pot llançar a qualsevol aplicació .NET.
Prerequisits
- .NET 6 o posterior
- El paquet de núvols:
Aspose.TeX - Fonts LaTeX que compilen sota el motor Object LaTeX utilitzat per Aspose.TeX
Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, i PngSaveOptions Per a la producció de PNG.
Conversió mínima: un arxiu PNG a LaTeX
Aquest exemple converteix hello-world.ltx (o el .tex) a PNG en una carpeta de sortida. El dispositiu escriu directament els arxius d’imatge.
// 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);
}
}
Aquest és el model documentat: crear TeXOptions,El set OutputWorkingDirectory,El set PngSaveOptions,Després, corria a TeXJob Amb un ImageDevice.
Conversió de batxillerat: tot .tex Arxius en una carpeta
La versió de lot escaneja un directori d’entrada i converteix cada .tex També mostra com controlar d’on es llegeixen les dependències i els gràfics inclosos.
// 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;
}
}
Punts clau per a batxillerat:
- utilitzar
InputWorkingDirectoryPer a actius com\includegraphics{img.png}. - utilitzar
RequiredInputDirectorySi heu de proporcionar paquets LaTeX addicionals fora del conjunt integrat. - Set
JobNamePermet influir en els noms de fitxers per document.
Capturar imatges en la memòria en lloc d’escriure arxius
Si prefereixes fluir els bytes PNG tu mateix, deixa que el dispositiu els bufés desactivant els escrits directes de fitxers.
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);
}
}
Això reflecteix la documentada “mètode alternativa” per escriure els arxius PNG de sortida principal.
Resolució de problemes & Tips
- Resolució:• Augment
PngSaveOptions.Resolutionper a fórmules més clares en captures de pantalla de retina o en actius d’impressió. - Dependències: col·locar paquets i entrades personalitzats en els directori especificats per
RequiredInputDirectoryiInputWorkingDirectory. - Només:• Set
options.JobNameNom de fitxer de sortida predictible en batxers. - Logotip:El motor escriu una transcripció
.loga la direcció de sortida, que és útil per a la depuració de paquets mancats i errors de LaTeX.
Quan triar altres formats
PNG és ideal per a la publicació web i la incorporació d’interfície d’usuari. Si necessiteu sortida vectorial per a zoom infinit o text petit a escala, canviar a SVG mitjançant l’ús de SvgSaveOptions i un SvgDevice, o al PDF per a documents de pàgines. El flux de conversió es manté el mateix.
Amb aquests patrons, podeu automatitzar LaTeX a PNG a escala en .NET mantenint el control total sobre la resolució, els directori i el maneig de fitxers.