我正在使用 Web 应用程序使用 C# 代码生成 PDF 文件。 PDF 文件包含 .tiff 图像。如果包含图像的文件夹的大小超过 1GB,则浏览器会自动关闭。使用 C# 代码生成 PDF 文件的图像大小限制是多少?
最佳答案
您问题的答案取决于三个参数:
- PDF 版本:PDF 1.5 之前与 PDF 1.5 及更高版本,
- PDF 样式:纯文本交叉引用表与交叉引用流,以及
- iText(Sharp) 版本:5.3 之前与 5.3 及更高版本。
让我们从 PDF 版本和交叉引用表开始。如果您不知道:交叉引用表定义了 PDF 中每个对象的字节偏移量。
在 PDF 1.5 之前的 PDF 版本中,交叉引用表以纯文本形式添加,每个字节偏移量使用十位数字定义。因此,文件的大小将限制在 10 到第十个字节(大约 10 GB)。
PDF 1.5 之前版本的 PDF 的最大大小约为 10 GB。
从 PDF 1.5 开始,您可以选择是要创建纯文本的交叉引用表,还是要使用交叉引用流。如果您使用交叉引用流,“仅限 10 位数字”的限制就会消失。
使用压缩交叉引用流的 PDF 1.5 或更高版本的 PDF 的最大大小仅取决于处理 PDF 的软件的限制。
如果您使用 iText(Sharp),如果您需要大于 10 GB 的文件,则需要确保使用压缩的交叉引用流创建文件。
iText 的版本也很重要:
- iText 5.3 之前的所有版本仅支持最大约 2 GB 的文件,因为所有字节偏移量在这些版本中都存储为
int
值。 - 从 5.3 开始,iText 支持最大 1 TB 的文件,因为所有字节偏移量在这些版本中都存储为
long
值。
使用 5.3 之前的 iText 版本创建的 PDF 的最大大小为 2 GB。使用 iText 5.3 及更高版本创建的 PDF 的最大大小为 1 TB。
但是:您还需要考虑到并非所有查看器都能呈现那么大的文件。虽然该文件可能完全符合 ISO-32000-1,但您可能会遇到内存限制。
您正在通过互联网将 1 GB 数据发送到随机机器上随机浏览器中的随机 PDF 查看器插件。如果是老机器,连1GB的内存都没有。当最终用户的连接速度很慢时,最终用户将不得不永远等待才能获得完整的文件。您无法预测浏览器和 PDF 查看器将如何响应。我的猜测是浏览器因内存不足异常而关闭。这不是由 PDF 固有的限制或 iText(Sharp) 的限制引起的问题。这纯粹是您的设计固有的限制。您不应该将千兆字节发送到浏览器。而是将它们写入云中的共享驱动器。
关于c# - 使用带图像的 C# 代码生成 pdf 文件的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277273/