La reproducción de la parte de LaTeX en PNG es un requisito común para la τεκμηρίωση ιστού, las bases de conocimientos y las aplicaciones matemáticas. Aspose.TeX for .NET proporciona una API simple para convertir .tex fuentes en imágenes raster con control de las listas de salida y de análisis. Este artículo muestra un mínimo convertidor de un archivo y un potente tubeline partide que se puede lanzar en cualquier aplicación .NET.
Condiciones
- .NET 6 o versiones posteriores
- En el paquete:
Aspose.TeX - Palabras que se escriben en la máquina Objeto LaTeX utilizado por Aspose.TeX
Aspose.TeX exposes TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice,y PngSaveOptions Para crear un PNG.
Eliminar archivos: archivo de archivos de PNG
El ejemplo transforma hello-world.ltx (o .tex) en PNG en un dossier de salida.
// 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);
}
}
Esto sigue el estándar documentado: crear TeXOptions,ΣΕΤ OutputWorkingDirectory,ΣΕΤ PngSaveOptions,Entonces, corre una TeXJob con una ImageDevice.
Batería de la batería: Todo .tex Archivo en un archivo
La versión de la lista de entradas de un catálogo y transforma cada .tex También muestra cómo controlar dónde se leen las dependencias y los gráficos que se incluyen.
// 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;
}
}
Puntos clave para los puestos de trabajo de las partidas:
- Utilización
InputWorkingDirectoryPara los elementos de la materia como\includegraphics{img.png}. - Utilización
RequiredInputDirectorysi necesita proporcionar paquetes adicionales de LaTeX fuera del conjunto integrado. - ΣΕΤ
JobNameInfluir en los archivos de salida por documento.
Registrar imágenes en la memoria en lugar de registrar archivos
Si prefiere hacer streaming de bytes PNG por sí mismo, deje que el dispositivo los guarde cerrando los archivos escritos.
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);
}
}
Esto refleja el «alternativo» para escribir los archivos principales de la salida PNG.
Servicios y tips
- Resolución:• Aumento
PngSaveOptions.Resolutionpara más tipos de imágenes en imágenes Retina o en activos impresos. - dependencias:• Coloca los paquetes y entradas personalizados en las listas que se determinan por
RequiredInputDirectoryyInputWorkingDirectory. - Nombre:ΣΕΤ
options.JobNamepara los nombres de archivos de salida previsible en lotes. - Contabilidad:La máquina escribe una transcripción
.logen el directorio de salida, que es útil para la solución de los paquetes y errores que faltan en LaTeX.
¿Cuándo elegir otras formas
PNG es ideal para la publicación en la web e integración de la interfaz de usuario. Si necesitas una salida para un texto en escala, dirígete a SVG utilizando SvgSaveOptions Y una SvgDevice, o en PDF para archivos de páginas.
Con estos estándares, puede automatizar LaTeX a PNG a escala en .NET, manteniendo al mismo tiempo el control completo de la análisis, los catálogos y el procesamiento de archivos.