Batch rendering LaTeX to PNG web belgeleri, bilgi tabanları ve matematiksel ağır uygulamalar için yaygın bir gerekliliktir. Aspose.TEX for .NET dönüştürmek için basit bir API sağlar .tex
çıkış dizinleri ve çözünürlük kontrolü ile resim kaynakları. bu makalede herhangi bir .NET uygulamasında düşebileceğiniz en az bir tek dosya dönüştürücü ve sağlam bir batch pipeline gösterilir.
Ön koşullar
- .NET 6 veya sonraki
- Bu paket için:
Aspose.TeX
- Aspose.TeX tarafından kullanılan Object LaTEX motoru altında toplanan LaTex kaynakları
ASPOSE.TEX Yorumları TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX)
, ImageDevice
, ve PngSaveOptions
PNG üretimi için.
Minimum dönüşüm: 1 LaTeX dosyası PNG’ye
Bu örnek dönüştürülür hello-world.ltx
(ya da .tex
) bir çıkış klasöründe PNG’ye. cihaz görüntü dosyalarını doğrudan yazar.
// 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);
}
}
Bu belgelendirilmiş şablonu takip eder: oluşturmak TeXOptions
, set OutputWorkingDirectory
, set PngSaveOptions
Ardından koşmak a TeXJob
ile bir ImageDevice
.
Batch dönüştürme: tüm .tex
Dosyaları bir klasörde
Batch versiyonu bir giriş dizinini tarar ve her birini dönüştürür. .tex
Ayrıca, bağımlılıkların ve grafiklerin nereden okunduğunu kontrol etmenin yollarını da gösterir.
// 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;
}
}
Batch işleri için önemli noktalar:
- Kullanımı
InputWorkingDirectory
içerdiği varlıklar gibi\includegraphics{img.png}
. - Kullanımı
RequiredInputDirectory
Eğer yerleşik setin dışında ek LaTeX paketleri sunmanız gerekiyorsa. - seti
JobName
Üretimi belgeye göre filenamaları etkilemek.
Dosyaları yazmak yerine hafıza görüntüleri yakalamak
PNG baytları kendiniz aktarmayı tercih ederseniz, cihazın doğrudan dosya yazılarını devre dışı bırakarak bunları buffer etmesine izin verin.
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);
}
}
Bu, ana çıkış PNG dosyalarını yazmak için belgelendirilmiş “alternatif yol” yansıtır.
Sorun çözümü ve ipuçları
- ** Çözüm**: artış
PngSaveOptions.Resolution
retina ekran görüntüleri veya baskı varlıklarında daha keskin formüller için. - Dependencies: Özel paketleri ve girişleri belirlenen dizinlere yerleştirin
RequiredInputDirectory
veInputWorkingDirectory
. - Adı * Set
options.JobName
tahmin edilebilir çıkış dosya isimleri için batch koşu.
- Adı * Set
- Logging: motor bir transkrip yazar
.log
kayıp paketleri ve LaTeX hataları debugging için yararlı olan çıkış dizinine.
Diğer formatları ne zaman seçmelisiniz
PNG web yayıncılığı ve UI entegre etmek için idealdir. sonsuz zoom veya ölçekte küçük metin için vektör çıkışı gerekiyorsa, kullanarak SVG’ye geçin SvgSaveOptions
ve bir SvgDevice
, veya paketli belgeler için PDF’ye. dönüşüm akışı aynı kalır.
Bu modellerle, LaTeX’i .NET’te ölçekte PNG’ye otomatikleştirebilirsiniz ve aynı zamanda çözünürlük, dizinler ve dosya yönetimi üzerinde tam kontrolünüzü koruyabilirsiniz.