GroupDocs.Conversion for .NET v26.6 が利用可能になりました。このリリースでは、変換イベントのサポートが強化され、PDF‑to‑Markdown のカスタム画像処理、DOCX の RTL 自動検出、そして多数の安定性向上が追加されています。

このリリースの新機能

キー カテゴリ 概要
CONVERSIONNET-7934 Feature PDF to Markdown: カスタム画像抽出とプレースホルダー挿入を許可
CONVERSIONNET-8286 Feature ConversionEvents アグリゲータを導入し、呼び出しごと/グローバルハンドラの優先順位を設定可能に
CONVERSIONNET-8314 Feature OnFontSubstituted 変換イベントを追加
CONVERSIONNET-8263 Improvement NuGet パッケージ分割
CONVERSIONNET-8280 Improvement バイディレクショナルマークアップが欠如または不正な DOCX の RTL 方向を自動検出
CONVERSIONNET-8325 Improvement フォームコントロールを含むシートで、SkipEmptyRowsAndColumns が重複テキストを回避できないスプレッドシート → PDF 変換
CONVERSIONNET-7912 Bug JPEG/TIFF 出力で文字化けが発生
CONVERSIONNET-8281 Bug 特定の XFA PDF を画像に変換するとハングし、結果が生成されない
CONVERSIONNET-8321 Bug Publisher 変換時の問題 – Aspose.PDF のロードに失敗

パブリック API の変更

⚠️ 破壊的変更

  • イベント名が変更され、イベント集約モデルが変更されました。既存の結果ごとのイベントプロパティおよびフルエントチェーンメソッドは obsolete とみなされ、v26.9 で削除されます。
  • ConverterSettings.ListenerIConverterListener インターフェイスは obsolete となり、ConversionEvents のライフサイクルイベントに置き換えられました。
  • OnConversionCompleted(ドキュメントごとのイベント)は OnDocumentConverted に名称変更されました。同名は変換実行の最後に一度だけ発火するパイプライン・ライフサイクルイベントとしても使用されます。

1. 新しいフォント置換イベント

API 説明
ConversionEvents.OnFontSubstituted ソースドキュメントで必要なフォントが欠如しており、代替フォントが使用されたときに発火します(自動またはユーザー定義ルールによる)。
FontSubstitutionContext 置換に関する詳細情報を提供します:SourceFileNameOriginalFontNameSubstituteFontNameReason
FontSubstitute ユーザーが提供する置換ルールを表します(例:FontSubstitute.Create("MissingFont", "Arial"))。

参照:

クラシック API の例

using GroupDocs.Conversion;
using GroupDocs.Conversion.Contracts;
using GroupDocs.Conversion.Options.Convert;

var events = new ConversionEvents
{
    OnFontSubstituted = ctx =>
    {
        var detail = ctx.OriginalFontName != null
            ? $"{ctx.OriginalFontName} -> {ctx.SubstituteFontName}"
            : ctx.Reason;
        Console.WriteLine($"Font substituted in '{ctx.SourceFileName}': {detail}");
    }
};

using var converter = new Converter(
    "source.docx",
    () => new ConverterSettings(),
    () => events);

converter.Convert("output.pdf", new PdfConvertOptions());

フルエント API の例

FluentConverter
    .WithEvents(e => e.OnFontSubstituted = ctx =>
        Console.WriteLine($"Font substituted: {ctx.Reason ?? ctx.OriginalFontName}"))
    .Load("source.docx")
    .ConvertTo("output.pdf")
    .WithOptions(new PdfConvertOptions())
    .Convert();

置換ルールの例(Word 処理 / スプレッドシート / PDF)

using GroupDocs.Conversion.Options.Load;

using var converter = new Converter(
    "source.docx",
    _ => new WordProcessingLoadOptions
    {
        FontSubstitutes = new List<FontSubstitute>
        {
            FontSubstitute.Create("MissingFont", "Arial")
        }
    },
    () => new ConverterSettings(),
    () => events);

converter.Convert("output.pdf", new PdfConvertOptions());

2. 統合イベント