LaTeX から PNG へのバッチレンダーは、Web ドキュメンタリー、知識ベース、および数学重いアプリケーションの一般的な要件です。 Aspose.TEX for .NET は簡単に変換する API を提供します。 .tex
出力ディレクトリと解像度をコントロールするラスター画像へのソース この記事では、最小限の単一ファイル変換器と強力なバッチパイプラインが、どの .NET アプリにも投げ込むことができます。
原則
- .NET 6 またはそれ以降
- パッケージ:
Aspose.TeX
- オブジェクト LaTeX エンジンで構成されるラテックス ソースは、Aspose.Tex によって使用されます。
ASPOSE.TEX レポート TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX)
, ImageDevice
, そして PngSaveOptions
PNGの生産を図る。
最小変換: 1 つの LaTeX ファイルを PNG に
この例が変換する。 hello-world.ltx
(あるいは .tex
) 出力フォルダーで PNG に. デバイスは画像ファイルを直接書きます。
// 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);
}
}
これは、文書化されたパターンに従います:作成 TeXOptions
セット OutputWorkingDirectory
セット PngSaveOptions
その後、走るA TeXJob
一つ一つで ImageDevice
.
バッチ変換:すべて .tex
フォルダー内のファイル
バッチバージョンは入力ディレクトリをスキャンし、それぞれを変換します。 .tex
それはまた、どこから依存と含まれるグラフィックが読み取られているかをコントロールする方法を示しています。
// 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;
}
}
バッチワークのポイント:
- 利用
InputWorkingDirectory
含まれる資産は、\includegraphics{img.png}
. - 利用
RequiredInputDirectory
内蔵セット以外に追加の LaTeX パッケージを提供する必要がある場合。 - セット
JobName
文書による出力フィルネームに影響を与える。
ファイルを書く代わりに記憶に画像を記録する
あなた自身でPNGビートをストリーミングすることを好む場合は、デバイスが直接ファイルの書き込みを削除してそれらをバッファーさせます。
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);
}
}
これは、主出力PNGファイルを書くための文書化された「代替方法」を反映します。
トラブル解決とヒント
- 解決策*:増加
PngSaveOptions.Resolution
ネットワークスクリーンショットや印刷資産でより鋭い公式のために。
- 解決策*:増加
- 依存性:カスタマイズされたパッケージと入力を指定されたディレクトリに置く
RequiredInputDirectory
そしてInputWorkingDirectory
. - 名称:セット
options.JobName
バッチルーンで予測可能な出力ファイル名。 - Logging:エンジンがトランスクリプトを書く
.log
出力ディレクトリに、欠けているパッケージやLaTeXエラーをデブギングするのに役立ちます。
他のフォーマットを選択するとき
PNG は Web 出版および UI 統合に最適です. 無限のゾームまたはスケールで小さなテキストのためのベクター出力が必要な場合は、SVG に切り替えます。 SvgSaveOptions
そして一 SvgDevice
, または PDF に付属ドキュメントのために. 変換の流れは同じです。
これらのパターンにより、Latex を .NET のスケールで PNG に自動化し、解像度、ディレクトリ、ファイル処理を完全にコントロールできます。