MigraDoc ドキュメントのヘッダーに画像を追加したいのですが、ドキュメント生成でファイルシステム パスをハードコーディングすることは、多くの問題で少し問題があります。 、展開をシンプルに保つため (r)。
画像をリソースとしてアセンブリに埋め込み、PDF に必要なときに抽出することができれば理想的ですが、これを行うための簡単な方法や組み込みの方法はないようです。トリックやアイデアはありますか?
いいえ、MigraDoc はこれを許可しません。ハックがありますが、ASP .NET を使用していて、ドキュメント プレビューを使用していない場合にのみ機能します。問題を詳しく説明している公式フォーラムの次のスレッドを参照してください。
埋め込みリソースを回避策として使用できます。つまり、一時的に保存し、終了後に dispose メソッドとデストラクタを使用して削除します。例:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri("pack://application:,,/Resources/temp.png");
bi.EndInit();
PngBitmapEncoder pbe = new PngBitmapEncoder();
pbe.Frames.Add(BitmapFrame.Create(bi));
using (FileStream fs = new FileStream("temp.png", FileMode.Create))
{
pbe.Save(fs);
}
その後、次の方法で使用できますがMigraDocObject.AddImage("temp.png");
、後で画像を削除するか、画像が既に存在するかどうか、およびファイルサイズが正しいかどうかのチェックを追加してください(ユーザーが置き換えた場合)。
PDFSharp/MigraDoc 1.50 には、これを行う別の方法が含まれています。MigraDoc wikiから:
PDFsharp 1.50 ベータ 2 では、新しい機能が追加されました。MigraDoc は、プレフィックス「base64:」が付いた BASE64 でエンコードされた画像を含むファイル名を受け入れるようになりました。この場合、ファイル名はファイルを参照しません。ファイル名には、ビットマップのすべてのビットが BASE64 エンコーディングの ASCII 文字列で含まれています。