Mat*_*ght 10 .net pdfsharp migradoc
我想在MigraDoc文档的标题中添加一个图像,但是在文档生成中硬编码文件系统路径对于许多问题来说有点问题 - 其中最重要的是它让我有点不安,但也,保持部署简单(r).
如果我可以将图像作为资源嵌入到程序集中,并且只是在PDF需要时提取它,那么在我看来这是理想的,但似乎没有任何简单或内置的方法来执行此操作.任何技巧或想法?
PDFSharp/MigraDoc 1.50 包含另一种方法来执行此操作。来自MigraDoc 维基:
PDFsharp 1.50 beta 2 添加了一项新功能:MigraDoc 现在接受包含带有前缀“base64:”的 BASE64 编码图像的文件名。在这种情况下,文件名不引用文件,文件名包含采用 BASE64 编码的 ASCII 字符串中位图的所有位。
不,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);
}
Run Code Online (Sandbox Code Playgroud)
然后,你可以通过使用它MigraDocObject.AddImage("temp.png");,但一定要事后删除图像或添加一个检查,如果图像已经存在,如果有正确的文件大小(当用户更换的话).
| 归档时间: |
|
| 查看次数: |
5888 次 |
| 最近记录: |