Dot-Net

將嵌入的資源圖像添加到 MigraDoc 文件

  • March 2, 2016

我想將圖像添加到 MigraDoc 文件的標題中,但是在文件生成中硬編碼文件系統路徑對於一些問題來說有點問題 - 其中最重要的是它讓我有點反感,而且,以保持部署簡單(r)。

在我看來,如果我可以將圖像作為資源嵌入到程序集中,並在 PDF 需要時將其提取出來,這似乎是理想的,但似乎沒有任何直接或內置的方法可以做到這一點。有什麼技巧或想法嗎?

不,MigraDoc 不允許這樣做。有一個 hack,但它僅在您使用 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");但請務必在之後刪除圖像或添加檢查圖像是否已存在以及文件大小是否正確(以防使用者替換它)。

引用自:https://stackoverflow.com/questions/5358436