[英]MigraDoc Images - When can I delete the images
我正在使用MigraDoc进行PDF导出,该应用程序的一部分允许用户将图像(MigraDoc.DocumentObjectModel.Shapes.Image)嵌入到文档中。 图像存在于数据库中,我无法升级到处理来自内存的FileStream图像的最新MigraDoc BETA。 因此,我的解决方案是从数据库中读取图像并将其存储在我的图像文件夹中的“临时”文件夹中,MigraDoc将在其中引用这些图像。 PDF呈现后,我将不再需要该图像,并且希望摆脱它。
PDF文档的呈现方式如下:
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = this.document;
renderer.RenderDocument();
byte[] pdfContents = null;
using (MemoryStream stream = new MemoryStream())
{
renderer.PdfDocument.Save(stream, true);
pdfContents = stream.ToArray();
}
return pdfContents;
并最终作为FileContentResult传递。
我的问题是,在该过程的任何阶段,我似乎都无法摆脱添加到PDF文档中的文件……直到我返回FileContentResult为止,它们似乎都是必需的。
PdfDocumentRenderer(或其他任何地方)上是否有设置将嵌入图像,而不是依赖它们在渲染FileContentResult之后就地放置?
调用renderer.PdfDocument.Save
之后,不再需要图像文件。
实际上,在调用renderer.RenderDocument();
之后不再需要图像renderer.RenderDocument();
。
一些背景资料
MigraDoc的WPF构建使用BitmapSource
类打开图像。 默认情况下,此类会缓存图像,并且1.32版使用默认选项,因此即使处理MigraDoc图像后,图像文件仍保持锁定状态。
缓存的这种不良副作用已在2014年11月修复,此后,MigraDoc在使用BitmapSource
类打开图像时禁用了缓存。
MigraDoc的GDI +版本从来没有这个缓存问题。
如果您的公司坚持使用四年前发布的版本,那么您将错过此后应用的所有改进和错误修复。
也许GDI构建是解决此锁定问题的解决方案(假设此问题是关于不再需要时保持锁定状态的图像文件)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.