Linux、macOS、Docker | Aspose.TeX for .NET 入門

適切なパッケージを選択する

Aspose.TeX for .NET は、API とバージョン番号が同じ 2 つの NuGet パッケージとして公開されています。

パッケージグラフィックス バックエンドWindowsLinux、macOSターゲット フレームワーク
Aspose.TeXSystem.Drawing.Common (GDI+)はいいいえ.NET Framework 4.0、.NET Standard 2.0、.NET 6.0、.NET 7.0
Aspose.TeX.DrawingAspose.Drawing (マネージド、パッケージに組み込み)はいはい.NET Standard 2.0、.NET 7.0

.NET 6 以降、Microsoft は System.Drawing.Common を Windows でのみサポートしています。アプリケーションが Linux または macOS で Aspose.TeX パッケージを使用すると、何かをレンダリングした時点で次のエラーが発生します。

1System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.

アプリケーションを Linux、macOS、Docker コンテナー、またはその他の Windows 以外の環境で実行する場合は、Aspose.TeX.Drawing を使用してください。このパッケージは Windows でも動作するため、1 つのアプリケーションを複数のプラットフォーム向けにビルドする場合は、どこでも使用できます。

Aspose.TeX.Drawing は System.Drawing.Common にも libgdiplus にも依存しません。グラフィックス バックエンド Aspose.Drawing は Aspose.TeX.dll に組み込まれているため、このパッケージがアプリケーションに追加するアセンブリは 1 つだけです。.NET 7.0 用ビルドは .NET 7、8、9、10 以降で使用され、.NET Standard 2.0 用ビルドは .NET Framework 4.7.2 以降で使用されます。

パッケージをインストールする

プロジェクトのフォルダーで次のいずれかのコマンドを実行します。

1dotnet add package Aspose.TeX.Drawing
1Install-Package Aspose.TeX.Drawing

パッケージを参照するその他の方法については、 インストールを参照してください。

2 つのパッケージのうち 1 つだけを参照してください。プロジェクトが Aspose.TeX と Aspose.TeX.Drawing の両方を参照している場合、ビルドは警告なしで成功しますが、出力フォルダーにコピーされる Aspose.TeX.dll は 1 つだけで、実行時にアプリケーションがエラーになります (例: TypeLoadException: Could not load type 'Aspose.TeX.Drawing.SizeF' from assembly 'Aspose.TeX')。Aspose.TeX.Drawing に切り替えるときは、先に Aspose.TeX パッケージを削除してください。

1dotnet remove package Aspose.TeX
2dotnet add package Aspose.TeX.Drawing

Aspose.TeX から Aspose.TeX.Drawing に切り替える

名前空間、クラス、メンバーは両方のパッケージで同じであるため、パッケージを置き換えた後もほとんどのコードは変更不要です。

色とサイズ

レンダリングのオプションと結果では、MathRendererOptions.TextColor、FigureRendererOptions.BackgroundColor、MathRenderer.Render の戻り値など、色とサイズが使用されます。Aspose.TeX.Drawing では、これらのメンバーの型は Aspose.TeX.Drawing.Color と Aspose.TeX.Drawing.SizeF です。どちらの型も System.Drawing.Color および System.Drawing.SizeF との間で暗黙的に変換されます。これらは System.Drawing.Common なしですべてのプラットフォームで使用できる標準の .NET 型であるため、次のようなコードはどちらのパッケージでもコンパイルおよび実行できます。

 1using System.Drawing;
 2using System.IO;
 3using Aspose.TeX.Features;
 4
 5PngMathRendererOptions options = new PngMathRendererOptions
 6{
 7    Resolution = 150,
 8    TextColor = Color.Black,
 9    BackgroundColor = Color.White
10};
11
12using (Stream stream = File.Create("formula.png"))
13{
14    SizeF size = new PngMathRenderer().Render(@"$$E = mc^2$$", stream, options);
15}

スムージング モードと補間モード

唯一の違いは、画像の保存オプション (PngSaveOptions、JpegSaveOptions、BmpSaveOptions、TiffSaveOptions) の SmoothingMode プロパティと InterpolationMode プロパティです。Aspose.TeX パッケージでは、これらは System.Drawing.Common に属する System.Drawing.Drawing2D 名前空間の列挙型を使用します (コンパイラは警告 CA1416 でこれらを Windows 専用として報告します)。Aspose.TeX.Drawing では、同じメンバーを持つ Aspose.TeX.Drawing.SmoothingMode 列挙型と Aspose.TeX.Drawing.InterpolationMode 列挙型を使用します。using ディレクティブを置き換え、残りのコードはそのままにします。

Aspose.TeX の場合:

1using System.Drawing.Drawing2D;
2using Aspose.TeX.Presentation.Image;
3
4PngSaveOptions saveOptions = new PngSaveOptions
5{
6    Resolution = 300,
7    SmoothingMode = SmoothingMode.AntiAlias,
8    InterpolationMode = InterpolationMode.HighQualityBicubic
9};

Aspose.TeX.Drawing の場合:

 1using Aspose.TeX.Presentation.Image;
 2using SmoothingMode = Aspose.TeX.Drawing.SmoothingMode;
 3using InterpolationMode = Aspose.TeX.Drawing.InterpolationMode;
 4
 5PngSaveOptions saveOptions = new PngSaveOptions
 6{
 7    Resolution = 300,
 8    SmoothingMode = SmoothingMode.AntiAlias,
 9    InterpolationMode = InterpolationMode.HighQualityBicubic
10};

この 2 つの型は、using Aspose.TeX.Drawing; ではなく、上記のようにエイリアスを使用してインポートしてください。Aspose.TeX.Drawing 名前空間には Color と SizeF も含まれているため、System.Drawing と一緒にインポートすると、コンパイラ エラー CS0104: 'Color' is an ambiguous reference が発生します。

Aspose.TeX.Drawing 名前空間の型

Aspose.TeX.Drawing 名前空間は Aspose.TeX.Drawing パッケージにのみ存在します。

型使用箇所System.Drawing との互換性
ColorMathRendererOptions.TextColor、FigureRendererOptions.BackgroundColorSystem.Drawing.Color との間の暗黙的な変換
SizeFMathRenderer.Render と FigureRenderer.Render の戻り値、MathRendererPluginResult と FigureRendererPluginResult の SizeSystem.Drawing.SizeF との間の暗黙的な変換
SmoothingModeImageSaveOptions.SmoothingModeSystem.Drawing.Drawing2D.SmoothingMode と同じメンバーと値
InterpolationModeImageSaveOptions.InterpolationModeSystem.Drawing.Drawing2D.InterpolationMode と同じメンバーと値

Docker で実行する

Aspose.TeX は独自の組み込み TeX フォントでドキュメントを組版し、Aspose.TeX.Drawing は独自のグラフィックス バックエンドを含んでいます。コンテナーには libgdiplus、fontconfig、インストール済みフォントのいずれも必要ありません。重要なシステム コンポーネントは ICU だけで、これは XPS と SVG の出力に必要です ( グローバリゼーション インバリアント モードを参照)。

Debian と Ubuntu をベースとする公式の .NET イメージは、追加のセットアップなしで動作します。

1FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
2WORKDIR /src
3COPY . .
4RUN dotnet publish -c Release -o /app
5
6FROM mcr.microsoft.com/dotnet/runtime:8.0
7WORKDIR /app
8COPY --from=build /app .
9ENTRYPOINT ["dotnet", "MyApp.dll"]

MyApp.dll はアプリケーションの名前に置き換えてください。ASP.NET Core アプリケーションの場合は、mcr.microsoft.com/dotnet/runtime の代わりに mcr.microsoft.com/dotnet/aspnet を使用します。同じルールが適用されます。

次の表は、イメージの種類ごとに必要な設定を示しています。

ベース イメージ追加のセットアップ
runtime:8.0、aspnet:8.0 (Debian)不要
runtime:8.0-noble、aspnet:8.0-noble (Ubuntu)不要
runtime:8.0-alpine、aspnet:8.0-alpineICU をインストールし、インバリアント モードをオフにする (下記参照)
runtime:8.0-noble-chiseled、aspnet:8.0-noble-chiseledICU を含む -noble-chiseled-extra バリアントを使用する
runtime:8.0-noble-chiseled-extra、aspnet:8.0-noble-chiseled-extra不要

.NET 9 と .NET 10 のイメージにも同じことが当てはまります。linux/amd64 と linux/arm64 のイメージがサポートされています。

Alpine

Alpine イメージは .NET をグローバリゼーション インバリアント モードで実行し、ICU を含んでいません。icu-libs パッケージをインストールし、インバリアント モードをオフにしてください。

 1FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
 2WORKDIR /src
 3COPY . .
 4RUN dotnet publish -c Release -o /app
 5
 6FROM mcr.microsoft.com/dotnet/runtime:8.0-alpine
 7RUN apk add --no-cache icu-libs
 8ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
 9WORKDIR /app
10COPY --from=build /app .
11ENTRYPOINT ["dotnet", "MyApp.dll"]

Chiseled (distroless) イメージ

Chiseled イメージにはシェルもパッケージ マネージャーも含まれていないため、ICU をインストールすることはできません。ICU をすでに含んでいる -chiseled-extra バリアントを使用してください。

1FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
2WORKDIR /src
3COPY . .
4RUN dotnet publish -c Release -o /app
5
6FROM mcr.microsoft.com/dotnet/runtime:8.0-noble-chiseled-extra
7WORKDIR /app
8COPY --from=build /app .
9ENTRYPOINT ["dotnet", "MyApp.dll"]

Chiseled イメージは、root 以外のユーザーとしてアプリケーションを実行します。出力ファイルは、アプリケーション フォルダーではなく、マウントしたボリュームや /tmp などの書き込み可能な場所に書き込んでください。

グローバリゼーション インバリアント モード

XPS と SVG の出力には ICU が必要です。.NET が グローバリゼーション インバリアント モードで実行されている場合、XPS または SVG への変換は次のような例外で失敗します。

1System.Globalization.CultureNotFoundException: Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information. (Parameter 'name')
2en-US is an invalid culture identifier.

インバリアント モードは、Alpine イメージと chiseled イメージで既定でオンになっており、プロジェクト プロパティ <InvariantGlobalization>true</InvariantGlobalization> によってもオンになります。PDF、PNG、JPEG、BMP、TIFF の出力はインバリアント モードでも動作します。XPS または SVG の出力が必要な場合は、 Docker で実行するに示すように ICU をインストールし、プロジェクトでインバリアント モードをオンにしないでください。

ライセンス

Aspose.TeX.Drawing は Aspose.TeX と同じライセンスを使用し、適用方法も同じです ( ライセンスを参照)。このライセンスは組み込みのグラフィックス バックエンド Aspose.Drawing にも適用されるため、Aspose.Drawing のライセンスを別途用意する必要はありません。

評価モードでは、Aspose.TeX.Drawing のラスター出力 (PNG、JPEG、BMP、TIFF) に 2 つの透かしが入ります。Aspose.TeX の評価版の透かしと、「Evaluation only Aspose.Drawing」という透かしです。Aspose.TeX のライセンスを適用すると、両方とも消えます。

既知の制限

Aspose.TeX.Drawing は、まだマルチページ TIFF ファイルを保存できません。TiffSaveOptions.Multipage を true に設定すると、生成される TIFF ファイルにはドキュメントの最初のページしか含まれず、例外も発生しません。すべてのページを取得するには、Multipage を false に設定してページごとに個別の TIFF 画像を取得するか、ドキュメントを PDF または XPS に変換してください。

トラブルシューティング

エラー原因解決策
PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.アプリケーションが Linux または macOS で Aspose.TeX パッケージを使用している。Aspose.TeX.Drawing パッケージを使用します。
TypeLoadException: Could not load type 'Aspose.TeX.Drawing.…' from assembly 'Aspose.TeX'プロジェクトが Aspose.TeX と Aspose.TeX.Drawing の両方を参照している。Aspose.TeX パッケージを削除します。
XPS または SVG への保存時の CultureNotFoundException: … en-US is an invalid culture identifier..NET がグローバリゼーション インバリアント モードで実行されている。ICU をインストールし、インバリアント モードをオフにします。 グローバリゼーション インバリアント モードを参照してください。
error CS0104: 'Color' is an ambiguous reference between 'System.Drawing.Color' and 'Aspose.TeX.Drawing.Color'コードが System.Drawing と Aspose.TeX.Drawing の両方をインポートしている。Aspose.TeX.Drawing の型をエイリアスでインポートします。 スムージング モードと補間モードを参照してください。
マルチページ TIFF ファイルに 1 ページしか含まれない。Aspose.TeX.Drawing の既知の制限。既知の制限を参照してください。

Linux とコンテナーへのデプロイのチェックリスト