MigraDoc 图像 - 我什么时候可以删除图像

MigraDoc Images - When can I delete the images

我正在使用 MigraDoc 进行 PDF 导出,部分应用程序允许用户将图像 (MigraDoc.DocumentObjectModel.Shapes.Image) 嵌入到文档中。图像存在于数据库中,我无法升级到处理来自内存的 FileStream 图像的最新 MigraDoc BETA。因此,我的解决方案是从数据库中读取图像并将它们存储在我的图像文件夹中的 'Temporary' 文件夹中,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 文档的文件...它们似乎在我 return FileContentResult.

PdfDocumentRenderer(或其他任何地方)是否有一个设置将嵌入图像而不是依赖它们在原位直到 FileContentResult 被渲染?

调用 renderer.PdfDocument.Save 后不再需要图像文件。

实际上调用 renderer.RenderDocument(); 后不再需要图像。

一些背景资料
MigraDoc 的 WPF 构建使用 class BitmapSource 打开图像。默认情况下,class 缓存图像,1.32 版使用默认选项,因此图像文件即使在处理 MigraDoc 图像后仍保持锁定状态。
缓存的这种不良副作用已于 2014 年 11 月修复 - 此后 MigraDoc 在使用 class BitmapSource.
打开图像时禁用缓存 MigraDoc 的 GDI+ 版本从来没有这个缓存问题。
如果您的公司坚持使用四年前发布的版本,那么您将错过此后应用的所有改进和错误修复。
也许 GDI 构建是这个锁定问题的解决方案(假设这个问题是关于图像文件在不再需要时保持锁定)。