Aspose.Cells で グラフが入ったxlsxファイルを PdfA1a で保存すると例外が発生します。
string inputPath = @"/mnt/gcs/test.xlsx";
string outputPath = @"/mnt/gcs/out.xlsx";
// PDF/A
Aspose.Cells.PdfSaveOptions saveOption = new()
{
Compliance = Aspose.Cells.Rendering.PdfCompliance.PdfA1a
};
var workbook = new Aspose.Cells.Workbook(inputPath);
using (MemoryStream ms = new MemoryStream())
{
workbook.Save(ms, saveOption); // <===== D:\dotnet-docker\aspnetapp\Program.cs:line 57
ms.Position = 0;
File.WriteAllBytes(outputPath, ms.ToArray());
}
Aspose.Cells.CellsException: Chart/Picture to image Error!
at Aspose.Cells.Workbook.Save(Stream stream, SaveOptions saveOptions)
at Program.<>c.<<Main>$>b__0_2() in D:\dotnet-docker\aspnetapp\Program.cs:line 57
検証用のサンプルを添付いたしましたので、回避方法などあればお教えいただけると幸いです。
検証には、.NET10 と docker desktop が必要です。
1.aspnetappディレクトリで以下のコマンドを実行し実行ファイルを作成します。
dotnet publish -c Release -o published
2.試しにローカルで実行するときはdotnet-dockerディレクトリで以下のコマンドを実行します。5353は仮のポートです。
docker build -t aspnetapp .
docker run -v /d/dotnet-docker/aspnetapp/gcs:/mnt/gcs/ -it --rm -p 5353:8080 --name aspnetcore_sample aspnetapp
http://localhost:5353/Test にアクセスするとdotnet-docker\aspnetapp\gcs に test.xlsx を開いて保存しただけの out.pdf が作成される予定ですが、例外になり出力できません。
Aspose.Cells は Version 25.11.0
SkiaSharp.NativeAssets.Linux は Version 3.119.1 です。
検証用ファイル.zip (1.9 MB)
@HidekazuTamura
概要
Aspose.Cells で Excel を PDF/A‑1a に変換しようとした際に Aspose.Cells.CellsException: Chart/Picture to image Error! がスローされるケースがあります。提供された情報だけでは正確な原因や回避策は特定できませんが、一般的にこの例外は以下のような状況で発生します。
なぜ起きるのか(一般的な可能性)
PDF/A‑1a では、すべての描画要素(チャート、画像、SmartArt など)をビットマップに変換して PDF に埋め込む必要があります。
変換処理は内部で SkiaSharp などの画像描画ライブラリに依存しており、Linux コンテナ環境で必要なネイティブライブラリ(例: libgdiplus, libskia, libpng, libjpeg, libfontconfig など)が不足していると変換に失敗し、上記例外が発生することがあります。
また、使用している Aspose.Cells のバージョンと SkiaSharp のバージョン間の互換性問題、あるいは特定のチャートタイプや画像フォーマットが PDF/A 変換時にサポートされていないケースも考えられます。
次に取るべき対策(一般的なトラブルシューティング手順)
コンテナに必要なネイティブライブラリをインストール
Debian 系ベースのイメージを使用している場合の例:
FROM mcr.microsoft.com/dotnet/aspnet:10.0
RUN apt-get update && apt-get install -y \
libgdiplus \
libskia \
libpng16-16 \
libjpeg62-turbo \
libfontconfig1 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY published/ .
ENTRYPOINT ["dotnet", "YourApp.dll"]
Alpine 系の場合は apk add --no-cache libgdiplus libskia libpng libjpeg-turbo fontconfig などに置き換えてください。
PDF/A 以外で保存できるか確認
var pdfOptions = new Aspose.Cells.PdfSaveOptions(); // Compliance を設定しない
workbook.Save("out.pdf", pdfOptions);
これで通常の PDF が生成できれば、例外は PDF/A 用のラスタライズ処理に起因している可能性が高いです。
Aspose.Cells と SkiaSharp のバージョンを最新に更新
新しいリリースでは Linux 環境での画像化に関する既知の問題が修正されていることがあります。
dotnet add package Aspose.Cells --version 25.12.0
dotnet add package SkiaSharp.NativeAssets.Linux --version 3.120.0
例外の内部情報を取得
try
{
workbook.Save(ms, saveOption);
}
catch (Aspose.Cells.CellsException ex)
{
Console.Error.WriteLine(ex.ToString()); // InnerException に "Failed to load native library" 等が出ていないか確認
}
取得したスタックトレースや InnerException のメッセージがあれば、欠如しているライブラリ名を特定できることがあります。
代替策
PDF/A‑1a の代わりに PDF/A‑1b や PDF/A‑2a へ変更してみる(画像化要件が緩やかになる場合があります)。
まず通常の PDF を生成し、外部ツール(例: Ghostscript)で PDF/A に変換するワークフローに切り替える。
まとめ
提示された情報だけでは例外の根本原因は確定できませんが、Linux Docker コンテナでのネイティブ画像描画ライブラリの不足やバージョン互換性が最も一般的な要因です。上記手順で必要なライブラリをインストールし、Aspose.Cells と SkiaSharp を最新バージョンに更新した上で再度実行してみてください。もし依然として例外が発生し、取得した例外メッセージに具体的なライブラリ名やエラーコードが含まれる場合は、その情報を追記いただければ、さらに詳細な解析が可能です。
もともと以下のライブラリがコンテナにインストール済みでした。
libfontconfig1 libicu74 libgdiplus libc6-dev
追加で以下のライブラリをインストールしましたが問題は解消しませんでした。
libpng16-16t64 libjpeg62
PdfA1aでなく以下のオプションで実行しましたが問題は解消しませんでした。
Aspose.Cells.PdfSaveOptions saveOption = new();
以下のバージョンが最新のようでした。問題は解消しませんでした。
Aspose.Cells 25.11.0
SkiaSharp.NativeAssets.Linux 3.119.1
特に追加のエラーメッセージはありませんでした。
こちらについては試行していません。
問題がおきるファイルを改めて添付させていただきます。
引き続きよろしくお願いいたします。
入力ファイル.zip (19.0 KB)
John.He
November 14, 2025, 8:01am
4
@HidekazuTamura
最新バージョンのv25.11でサンプルファイルとコードを使用してテストしたところ、問題を再現できました。ファイルをPDF形式で保存すると例外が発生します。
内部問題追跡システムで次の新しいチケットを開き、Free Support Policies に記載されている条件に従って修正を提供しています。
質問番号:CELLSNET-59376
leoluo
November 18, 2025, 3:40am
5
@HidekazuTamura
改正してください" skiasharp . nativeassets . linux 3.119.1、変更" skiasharp . nativeassets . linux . nodependencies 3.116.1 ".
修正すれば問題が解決しますテストdockerの項目を添付します:
DockerTest.zip (4.7 MB)
leoluo
November 18, 2025, 3:43am
6
" skiasharp.nativeassets.linux "を使う場合は、libfontconfigを追加でインストールする必要があります。
参考ドキュメント:
回答ありがとうございます。
SkiaSharp.NativeAssets.Linux を SkiaSharp.NativeAssets.Linux.NoDependencies に置き換えしてみたのですが、元の検証用ファイル.zipのプロジェクトでは問題が解消しませんでした。いただいたサンプルでは問題が発生しないことも確認いたしました。
NoDependencies への置き換え以外に実施したことは、
・ライブラリのバージョンの組み合わせを変更
・.NETのバージョンを変更
・dotnet publish のときのパラメータ変更
などです。
お手数をおかけいたしますが検証用のサンプルで確認いただくことは可能でしょうか?
Dドライブのdotnet-dockerに展開してから以下のコマンドで実行できます。
1.aspnetappディレクトリで以下のコマンドを実行し実行ファイルを作成します。
dotnet publish aspnetapp.csproj -c Release -o “D:\dotnet-docker\aspnetapp\publish”
2.dotnet-dockerディレクトリで以下のコマンドを実行します。5353は仮のポートです。
docker build -t aspnetapp .
docker run -v /d/dotnet-docker/aspnetapp/gcs:/mnt/gcs/ -it --rm -p 5353:8080 --name aspnetcore_sample aspnetapp
http://localhost:5353/Test にアクセスするとdotnet-docker\aspnetapp\gcs に test.xlsx を開いて保存しただけの out.pdf が作成される予定ですが、例外になり出力できません。
Aspose.Cells は Version 25.11.0
SkiaSharp.NativeAssets.Linux.NoDependencies は Version 3.119.1 です。
sample.zip (1.8 MB)
leoluo
November 18, 2025, 7:45am
8
@HidekazuTamura
あなたが提供したプロジェクトでは.Net10が使用されていますが、現時点でAspose.Cellsがリリースされている最新バージョンには.Net10は含まれておらず(最高が.Net9までです)、これが問題の原因となる可能性があります。ですから、.Net9を用いてテストを行っていただけるようお願いいたします。ありがとうございます。
マイクロソフトは11月に.Net10を公式にリリースしたばかりです。当社はできるだけ早く、Aspose.Cellsを.Net10環境下で開発とテストを行い、次のバージョンで.Net10をサポートする予定です 。
@leoluo
回答ありがとうございます。
.Net10から.Net9にプロジェクトとコンテナを変更しましたが現象は変わりませんでした。いただいた DockerTest.zip と何かが違うと思うのですが NoDependencies の他にポイントなどありますでしょうか?一応、.Net9に変更したサンプルを添付いたします。
sample-dotnet9.zip (1.8 MB)
leoluo
November 18, 2025, 8:23am
10
@HidekazuTamura
新提供net9工事の検査をした結果、“skiasharp . nativeassets . linux . nodependencies " 3.119.1引用のバージョンは、それを変えてください” 3.116.1、このバージョンなら号とaspose . cells使用の" skiaSharp"のバージョン番号が一致しています。(dockertest.zipの設定を参照)
@leoluo
Aspose.Cells 25.11.0
SkiaSharp.NativeAssets.Linux.NoDependencies 3.116.1
の組み合わせで問題が解決いたしました。
助かりました。ありがとうございました。
That was helpful. Thanks.
@HidekazuTamura ,
バージョンをSkiaSharp.NativeAssets.Linux.NoDependencies 3.116.1に変更することで問題が解決したことを知れて良かったです。さらにご質問やコメントがございましたら、どうぞお気軽にお知らせください。
leoluo
November 18, 2025, 9:30am
13
@HidekazuTamura
問題が解決して嬉しいです。「skiasharp . nativeassets.linux.nodependencies」と「skiasharp」のバージョンを一致させる必要があります。
.net10のサポートについては、新しいタスクを作成しましたので、aspos.cells for.net10がリリースされ次第、このスレッドでお知らせします。
leoluo
November 18, 2025, 9:30am
14
@HidekazuTamura
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies .
Issue ID(s): CELLSNET-59396
You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.
@HidekazuTamura ,
次回のAspose.Cellsリリースでは、.NET 10のサポート(チケットID: “CELLSNET-59396”)を組み込みました。このサポートは、25.12または26.1リリースのいずれかに含まれる予定です。.NET 10でコンパイルされたAspose.Cells.Dllアセンブリを含めます。サポートされたAspose.Cellsのバージョンを公開次第、こちらで更新情報をお知らせします。