Batch rendering LaTeX ke PNG adalah persyaratan umum untuk dokumentasi web, basis pengetahuan, dan aplikasi matematika berat. Aspose.Tex untuk .NET menyediakan API yang mudah untuk konversi .tex
sumber ke gambar raster dengan kontrol atas direktori output dan resolusi. artikel ini menunjukkan converter file tunggal minimal dan pipa batch yang kuat yang dapat Anda turun ke aplikasi .NET apa pun.
Persyaratan
- .NET 6 atau lebih baru
- Pakej yang baru:
Aspose.TeX
- Sumber-sumber LaTeX yang dikompilasi di bawah mesin Object LaTex yang digunakan oleh Aspose.TEX
Aspose.TeX eksposur TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX)
, ImageDevice
, dan PngSaveOptions
untuk menghasilkan produk PNG.
Konversi minimal: satu file LaTeX ke PNG
Contohnya adalah konversi hello-world.ltx
(atau .tex
) ke PNG dalam folder output. perangkat menulis file gambar secara langsung.
// 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);
}
}
Ini mengikuti pola yang didokumentasikan: membuat TeXOptions
dan set OutputWorkingDirectory
dan set PngSaveOptions
Kemudian berlari A TeXJob
Dengan satu ImageDevice
.
Konversi Batch: Semua .tex
File dalam folder
Versi batch memindai direktori input dan mengubah masing-masing .tex
Ini juga menunjukkan bagaimana untuk mengontrol di mana ketergantungan dan grafis yang dimasukkan dibaca.
// 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;
}
}
Titik-titik utama untuk pekerjaan batch:
- Penggunaan
InputWorkingDirectory
Dengan adanya aset seperti\includegraphics{img.png}
. - Penggunaan
RequiredInputDirectory
Jika Anda perlu menyediakan paket LaTeX tambahan di luar set terintegrasi. - Set yang
JobName
untuk mempengaruhi nama file produksi per dokumen.
Menangkap gambar dalam memori bukannya menulis file
Jika Anda lebih memilih untuk streaming byte PNG sendiri, biarkan perangkat buffer mereka dengan mengalihkan tulisan file langsung.
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);
}
}
Ini mencerminkan “cara alternatif” yang didokumentasikan untuk menulis file PNG output utama.
Penyelesaian masalah dan tips
- Resolusi * Peningkatan
PngSaveOptions.Resolution
Untuk formula yang lebih tajam dalam screenshots retina atau aset cetak.
- Resolusi * Peningkatan
- Dependensi: menempatkan paket dan input tersuai dalam direktori yang ditentukan oleh
RequiredInputDirectory
danInputWorkingDirectory
. - Nama * Set
options.JobName
Untuk nama file output yang dapat diramalkan dalam batch run.
- Nama * Set
- Logging: mesin menulis transkrip
.log
untuk direktori output, yang berguna untuk debugging paket yang hilang dan kesalahan LaTeX.
Kapan memilih format lain
PNG ideal untuk penerbitan web dan penyebaran UI. Jika Anda membutuhkan output vector untuk zoom tak terbatas atau teks kecil pada skala, beralih ke SVG dengan menggunakan SvgSaveOptions
dan satu SvgDevice
, atau ke PDF untuk dokumen yang dibayar. aliran konversi tetap sama.
Dengan pola ini, Anda dapat mengautomatikkan LaTeX ke PNG pada skala di .NET sambil menjaga kontrol penuh atas resolusi, direktori, dan pengelolaan file.