拡張 EMF/WMF メタファイルサポート

概要

HotPDF では、拡張メタファイル (EMF) および Windows メタファイル (WMF) 形式のサポートが大幅に強化されました。新しい実装には、自動フォーマット検出、複数の配置オプション、高度なスケーリング制御、および PDF ドキュメント内のベクターグラフィックスのレンダリング品質の向上が含まれています。

主な機能強化

  • 自動 EMF/WMF 形式検出と適切な処理
  • 複数の配置オプション (中央、左上、カスタム座標)
  • 拡張されたスケーリングとアスペクト比の制御
  • ベクターグラフィックスを保持するための直接 EMF レンダリング
  • 互換性のためのビットマップ変換オプション
  • 大規模なメタファイルのメモリ管理の改善
  • 複雑なベクターグラフィックスとテキストの処理の改善

位置制御オプション

拡張メタファイルサポートには、柔軟な配置オプションが含まれています。

  • mpCenter: ページの中央に配置されたメタファイル (デフォルトの動作)
  • mpLeftトップへ: 左上隅に表示されるメタファイル (X=0, Y=0)
  • mpCustom: 指定された位置に表示されるメタファイル (X、Y パラメータが必要)

使用例

基本的な使用法 (デフォルトの中央表示)


// Delphi example - Default centered display
procedure ShowMetafileDefault;
var
  PDF: THotPDF;
  MetaFile: TMetafile;
begin
  PDF := THotPDF.Create(nil);
  MetaFile := TMetafile.Create;
  try
    PDF.BeginDoc;
    PDF.AddPage;

    // Load metafile
    MetaFile.LoadFromFile('diagram.emf');

    // Display centered on page (default)
    PDF.CurrentPage.ShowMetafile(MetaFile);

    PDF.EndDoc;
  finally
    MetaFile.Free;
    PDF.Free;
  end;
end;
        

位置制御の使用法


// Delphi example - Advanced positioning
procedure ShowMetafileAdvanced;
var
  PDF: THotPDF;
  MetaFile: TMetafile;
begin
  PDF := THotPDF.Create(nil);
  MetaFile := TMetafile.Create;
  try
    PDF.BeginDoc;
    PDF.AddPage;

    MetaFile.LoadFromFile('chart.wmf');

    // トップへ-left corner display
    PDF.CurrentPage.ShowMetafile(MetaFile, mpLeftトップへ);

    // Custom position display
    PDF.CurrentPage.ShowMetafile(MetaFile, mpCustom, 100, 200);

    PDF.EndDoc;
  finally
    MetaFile.Free;
    PDF.Free;
  end;
end;
        

拡張メソッド

拡張 EMF/WMF サポートでは、いくつかの新しいメソッドが導入されています。

THPDFPage.ShowMetafile オーバーロード

  • ShowMetafile(MetaFile: TMetafile) - デフォルトの中央表示
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - 位置制御
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - カスタムの配置

拡張処理メソッド

  • EnhancedShowMetafile - 拡張機能を備えた高度な処理
  • RenderEmfDirect - ベクターを保持するための直接 EMF レンダリング
  • RenderEmfAsBitmap - 互換性のためのビットマップ変換
  • RenderWmfAsBitmap - 位置制御付きの WMF ビットマップレンダリング

技術的な実装

拡張 EMF/WMF サポートは、HPDFEmf.pas ユニットを通じて実装されており、以下の機能を提供します。

  • THPDFEmfEnhanced: EMF 処理のコア拡張クラス
  • THPDFEmfPatcher: EMF 変換およびレンダリングのユーティリティクラス
  • THPDFMetafilePosition: 位置制御の列挙型
  • 拡張 EMF レコード処理: 高度な EMF レコードのサポート

高度な機能

EMF レコードサポート

  • EMR_BITBLT - ビットマップ操作
  • EMR_STRETCHDIBITS - 引き伸ばされたビットマップ操作
  • EMR_ALPHABLEND - アルファブレンド操作
  • 拡張されたテキストレンダリング
  • 複雑なパス操作

レンダリングオプション

  • ベクターの保持: ベクターグラフィックスの品質を維持します
  • ビットマップフォールバック: 複雑なグラフィックスの自動フォールバック
  • スケーリングオプション: 自動および手動のスケーリング制御
  • 品質管理: 構成可能なレンダリング品質設定

パフォーマンスの最適化

  • 大規模なメタファイル向けのメモリ効率の高い処理
  • 最適化された EMF レコードの解析
  • 繰り返される要素のインテリジェントなキャッシュ
  • 変換時のメモリフットプリントの削減

互換性と標準

  • Windows EMF 1.0 および拡張 EMF のサポート
  • Windows メタファイル (WMF) の下位互換性
  • クロスプラットフォームでのレンダリングの一貫性
  • PDF ベクターグラフィックス標準への準拠

トラブルシューティング

一般的な問題と解決策:

  • 大規模なメタファイル: 非常に大きい、または複雑なメタファイルにはビットマップレンダリングを使用します
  • テキストレンダリング: ターゲットシステムでフォントが利用可能であることを確認します
  • 複雑なグラフィックス: より良い品質のために直接 EMF レンダリングを検討します
  • 配置の問題: 正確な配置にはカスタムの配置を使用します

関連項目