6

我需要客户能够下载已发送给他们的信件的 PDF 格式。

我已经阅读了有关文档或图像的数据库与文件系统存储的线程,听起来确实像是共识是,对于不仅仅是几个图像,文件系统是要走的路。

我想知道的:

  • 一个合理的替代方法是将信件详细信息存储在数据库中,并在请求时“即时”重新创建 PDF?
  • 这种方法是优于还是劣于从文件系统中获取 PDF?
4

8 回答 8

9

如果是出于存档目的,我肯定会存储 PDF,因为将来您的 PDF 生成脚本可能会更改,然后这封信将与最初发送的不完全相同。客户会期望它完全一样。

哪种方法更好并不重要,有时最好选择哪种方法更安全。

于 2008-10-22T22:25:08.170 回答
3

我会把它储存起来有两个原因

1) 如果您更改了生成 PDF 的方式,您可能不希望更改历史项目。如果你每次都生成它们,要么它们会改变,要么你需要保留兼容性代码来生成“旧式”记录

2) 磁盘空间便宜。用户的耐心不是。除非您真的迫切需要存储或提取存储空间比生成 PDF 更难,否则请善待您的用户并将其存储起来。

显然,如果您每小时从稀疏数据集中创建数千个这样的数据,您可能没有存储空间。但如果你有空间,我会投票支持“使用它”

于 2008-10-22T22:29:09.113 回答
2

您必须保留发送给客户的信件记录是否有取证原因?如果您要即时重新生成,您怎么知道未来的代码更改不会重写这封信(或者,如果该信息用于诉讼,至少客户可以在法庭上提出该论点)......

于 2008-10-22T22:27:18.383 回答
0

我倾向于说“这取决于”。

当一个文档被多次请求时,如果您在第一次请求时编写它并随后检索它,可能会节省很多。

OTOH 如果大多数对文档的请求都是一次性类型的,并且创建过程不会占用您的大部分服务器容量,那么即时将具有明显的优势。

于 2008-10-22T22:20:18.617 回答
0

如果您使用的是 ASP.NET,为什么不缓存 PDF。如果您愿意,您的缓存可以存储在数据库中,或者只要您首先需要它就可以保留在内存中。企业库在缓存应用程序块中为您实现了这一点,并且使用起来非常简单。如果您缓存对象,使用块在数据库中创建存储,然后在需要时加载它,您不必担心重新创建它。

于 2008-10-22T22:23:48.890 回答
0

需要考虑的几件事是,PDF 是基于某个时间点存在的数据生成的。EG 基于上个月数据的账单?

如果是这样,您会每个月使用相同的模板来生成这封信吗?如果/当字母格式发生变化时会发生什么,如果您即时重新生成它不再是发送给他们的相同。是否有可能将 PDF 流存储到数据库中?

我猜我在说什么,您是否需要准确表示发送给用户的内容,或者是否灵活?

于 2008-10-22T22:26:21.457 回答
0

是动态生成 pdf 文件还是静态存储它们的问题听起来更像是一个法律问题,而不是编程问题。

如果您无法获得可以为此提供指导的法律顾问,那么谨慎行事并静态存储它们会更安全。

于 2008-10-23T02:24:57.483 回答
0

只要PDF 文档是永久性的(不仅仅是工作文档,而是正式签署并发送到公司或公司外的其他地方),您应该在您的网络上拥有此 PDF 文件的副本,以及一个链接到数据库中的这个文件。

您不能依赖可用数据在不同时间复制相同的文档,主要是因为:

  1. 数据可以更改(是的!假设这封信是由部门负责人签署的,并且人员已更改?)
  2. 您的报告格式将发生变化(页眉、页脚、徽标等)
  3. 您制作的文档由将使用文档中可用数据的其他人保存。
于 2008-10-23T08:18:36.753 回答