El rendiment de batxillerat LaTeX a PNG és un requisit comú per a la documentació web, les bases de coneixements i les aplicacions matemàtiques pesades. Aspose.TEX per .NET proporciona una API senzilla per convertir .tex fonts en imatges de raster amb control sobre directoris de sortides i resolució. aquest article mostra un convertidor de fitxers únics mínim i un tub de batxeta robust que es pot llançar a qualsevol aplicació .NET.
Prerequisits
- .NET 6 o més tard
- El paquet de NuGet:
Aspose.TeX - Fonts de laTeX que compilen sota el motor de l’Object LaTEX utilitzat per Aspose.Tex
Aspose.TeX exposició TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, i PngSaveOptions Producció de PNG.
Conversió mínima: un arxiu LaTeX a PNG
Aquest exemple converteix hello-world.ltx (o .tex) a PNG en una carpeta de sortida. el dispositiu escriu els fitxers d’imatge directament.
// 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);
}
}
Segueix el patró documentat: creació TeXOptionsEl set OutputWorkingDirectoryEl set PngSaveOptionsA continuació, a TeXJob Amb un ImageDevice.
Conversió de batxillerat: tot .tex Arxius en una carpeta
La versió de batxillerat escaneix 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;
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 les tasques de batxillerat:
- Use
InputWorkingDirectoryEls actius inclosos com\includegraphics{img.png}. - Use
RequiredInputDirectorysi vostè ha de proporcionar paquets LaTeX addicionals fora del conjunt incorporat. - Set
JobNamePer influir en els noms de producció per document.
Capturar imatges en memòria en lloc d’escriure arxius
Si prefereix stream PNG bytes vostè mateix, deixeu que el dispositiu buffer-los desactivant els escrits de fitxers directes.
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);
}
}
Això reflecteix el documentat “mode alternatiu” per escriure els arxius PNG de sortida principal.
Trastorns i consells
- Resolució: augmentar
PngSaveOptions.Resolutionper a fórmules més acurades en pantalles de pantalla de la retina o els actius d’impressió. - Dependències: col·locar els paquets i les entrades personalitzats en els directoris especificats per
RequiredInputDirectoryiInputWorkingDirectory. - Nom * Set
options.JobNameper als noms de fitxers de sortides previsibles en les runes de batx.
- Nom * Set
- Logging: el motor escriu un transcript
.loga la direcció de sortides, que és útil per a debugir els paquets desapareguts i els errors de LaTeX.
Quan triar altres formats
PNG és ideal per a la publicació web i la incorporació d’UI. Si necessites una sortida de vector per al zoom infinit o un petit text a escala, canviar a SVG utilitzant SvgSaveOptions i un SvgDevice, o a PDF per a documents pagats. El flux de conversió es manté el mateix.
Amb aquests patrons, vostè pot automatitzar LaTeX a PNG a escala en .NET mentre manté el control complet sobre la resolució, els directoris i el tractament de fitxers.