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ó TeXOptions
El set OutputWorkingDirectory
El set PngSaveOptions
A 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
InputWorkingDirectory
Els actius inclosos com\includegraphics{img.png}
. - Use
RequiredInputDirectory
si vostè ha de proporcionar paquets LaTeX addicionals fora del conjunt incorporat. - Set
JobName
Per 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.Resolution
per 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
RequiredInputDirectory
iInputWorkingDirectory
. - Nom * Set
options.JobName
per als noms de fitxers de sortides previsibles en les runes de batx.
- Nom * Set
- Logging: el motor escriu un transcript
.log
a 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.