关闭后,从本地计算机中删除生成的PDF

时间:2017-02-09 18:26:49

标签: c# wpf pdf io

我有一个抽象的问题:
我有一个WPF应用程序,其中一个模块基于原始文档(存储在FTP上)生成PDF文件 生成的文件在本地计算机上保存到使用GetTemporaryDirectory()生成的目录 我想要实现的是在用户关闭PDF阅读器(这不是我的应用程序的一部分)后删除临时文件,因此应用程序不会留下任何垃圾。
到目前为止,我想到了几个解决方案,但它们都不合适:
1.直接从MemoryStream中读取PDF,据我所知 - 这是不可能的,因为需要生成文件才能打开它 2.设置硬编码的文件名和目录路径。但这是一个糟糕的解决方案,仍然留下垃圾,只有更少。即使我将“生成附加文件,如果原始文件无法访问”(e.x.文件当前打开) 3.在我的应用程序的新窗口中打开PDF(将PDF阅读器嵌入到应用程序中)。但这是一个丑陋而过度的解决方案 4.在我的Document对象表中添加一个新列...我甚至不想考虑这个解决方案将导致的位置。但它就在这里,因为它是可能的解决方案之一
将高度赞赏任何相关的想法 提前谢谢。

解决方案:
每当我生成一个新的临时PDF时 - 我将其完整文件路径(字符串)添加到AppSession字典对象(字符串数组)中,我们可以调用“generated_files”。
然后我将一个事件处理程序放到关闭应用程序窗口() 该事件试图从generated_files中删除每个generated_file。如果尝试不成功 - 将此文件添加到字符串数组inaccessible_files(由用户打开或在此时刻被其他进程使用)。
最后,序列化inaccessible_files 在下一次启动应用程序时 - 我们希望将unrecessible_files设置为generated_files,这样它们将在下次完成会话时被清除。

我已经省略了细节,因为问题是抽象的,但是像这样的逻辑并且工作得很好(它不是完美的解决方案,但它的方式,比使用IE打开pdf的常规做法更好)。同样 - 它是生成更清洁算法的良好起点 欢呼声。

0 个答案:

没有答案